首页 > 解决方案 > Kotlin SpringMVC - JpaRepository 生成无效更新查询

问题描述

我对 Spring MVC 很陌生,我在让一个简单的实体更新工作时遇到了问题。

我的数据类看起来像这样......

@Entity
@Table(uniqueConstraints=[UniqueConstraint(columnNames=["name_search"])])
data class ArticleType(
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        val id: Long? = null,
        val name : String = "",
        val order: Int? = null,
        var name_search : String = ""
)

存储库看起来像这样......

interface ArticleTypeRepository : JpaRepository<ArticleType, Long> {
    fun findFirstById(id: Long) : ArticleType?

    fun findAllByOrderByOrderAsc(): List<ArticleType>

    fun findByName(name: String): ArticleType?
}

我正在尝试像这样更新 name_search 列...

val article_type:ArticleType? = articleTypeRepository.findFirstById(1234)
if (article_type !== null) {
    article_type.name_search = "abc"
    articleTypeRepository.save(article_type)
}

这会导致以下错误...

java.sql.SQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'order=99 where id=1234' 附近使用正确的语法

我假设这意味着绑定无法正常工作,并且缺少“name_search”绑定,或者缺少引号或其他内容。我已经打开了日志记录,我可以看到以下内容......

org.hibernate.SQL : 更新 article_type 设置 name=?, name_search=?, order=? 哪里id=?

然后它列出了绑定参数“ohtype.descriptor.sql.BasicBinder”,这些参数看起来都是正确的。

我不确定出了什么问题,或者我需要从哪里开始尝试修复它。

这是我继承的遗留系统,我并不完全理解它。如果我需要在这里提供一些额外的信息,请告诉我。

标签: kotlinspring-data-jpa

解决方案


推荐阅读