Автоматическое обновление Hibernate не создает таблицу для указанного объекта c - PullRequest
0 голосов
/ 09 января 2020

У меня есть приложение Java Spring MVC с использованием Hibernate и MySQL 5.7 DB. Hibernate настроен на автоматическое обновление схемы от новых сущностей с помощью: <prop key="hibernate.hbm2ddl.auto">update</prop>

. Он работает для всех сущностей в моем приложении, кроме одной:

@Entity
@IdClass(QuestionId.class)
@Getter
@Setter
@Accessors(chain = true)
@EqualsAndHashCode
public class Question {
    @Id
    private String key;

    @Id
    private Long version;

    @Type(type = "json")
    @Column(columnDefinition = "json")
    private JsonNode metaData;
}

Эта сущность определена в точно так же, как и другие объекты, но при запуске приложения эта конкретная таблица не создается в БД. Нет сообщений об ошибках, которые мне удалось раскрыть.

1 Ответ

0 голосов
/ 09 января 2020

Я на самом деле обнаружил проблему с помощью ответа на другой вопрос: Спящий режим не создает таблицу, но нет сообщений об ошибках

Такое может происходить при использовании зарезервированных ключевых слов БД в качестве имен свойств / столбцов . В моем случае key является зарезервированным ключевым словом в MySQL: https://dev.mysql.com/doc/refman/8.0/en/keywords.html

public class Question {
    @Id
    private String key; // <==== NO; `KEY` is a db reserved keyword.

    @Id
    private Long version;

    @Type(type = "json")
    @Column(columnDefinition = "json")
    private JsonNode metaData;
}

Изменение имени свойства (или альтернативное указание явного имени столбца) решает проблему , Возможно, было сообщение об ошибке, если я включил правильные флаги отладки, но проблема была решена до этого.

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