Kotlin Spring MVC - JpaRepository генерирует неверный запрос на обновление - PullRequest
0 голосов
/ 14 января 2020

Я совсем новичок в 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, на предмет правильного синтаксиса для использования рядом с 'order = 99, где id = 1234' в строке 1

Я предполагаю, что это означает, что привязка работает неправильно и отсутствует привязка "name_search" или отсутствуют кавычки или что-то в этом роде. Я включил ведение журнала и вижу следующее ...

org.hibernate. SQL: обновить имя_сталии set name = ?, name_search = ?, order =? где id =?

Затем в нем перечислены параметры привязки "ohtype.descriptor. sql .BasicBinder", которые кажутся правильными.

Я не уверен, что происходит не так, или где мне нужно начать пытаться это исправить.

Это устаревшая система, которую я унаследовал, и я не до конца ее понимаю. Если мне нужна дополнительная информация, пожалуйста, сообщите мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...