Spring JPA не обнаруживает удаленные таблицы - PullRequest
0 голосов
/ 16 июня 2020

Я удалил свои таблицы, чтобы их можно было воссоздать с помощью Spring JPA, но Spring их не создает. Вместо этого я получаю следующее исключение:

Unable to create unique key constraint (guild_id, setting_key) on table guild_setting: database column 'guild_id' not found. Make sure that you use the correct column name which depends on the naming strategy in use (it may not be the same as the property name in the entity, especially for relational types)

Я не знаю, почему я получаю эту ошибку, но до того, как я удалил таблицы в базе данных, имя столбца было guild_id, так что JPA утверждает, что это неверно.

Это отрывок из Entity:

@Entity
@Table(uniqueConstraints=@UniqueConstraint(columnNames={"guild_id", "setting_key"}))
public class GuildSetting extends Setting {

    @Column(nullable = false)
    private long guildId;

Следующие свойства устанавливаются с помощью свойств spring.datasource:

spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update

1 Ответ

0 голосов
/ 16 июня 2020

Если вы не хотите использовать @Column(name="guild_id")

, вы должны использовать @UniqueConstraint(columnNames={"guildId", ...}

Сгенерированная таблица будет содержать (правильный) столбец с именем guild_id

@Entity
@Table(uniqueConstraints=@UniqueConstraint(columnNames={"guildId", "setting_key"}))
public class GuildSetting extends Setting {

    @Column(nullable = false)
    private long guildId;

Согласен, это похоже на ошибку ...


Примечание: вы не упомянули, что у вас проблемы с ограничением setting_key unique.

Вы используете @Column(name="setting_key") или private String setting_key?

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