#java #spring #hibernate #jpa
Вопрос:
import javax.persistence.*; @Table(name = "users") @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "userID") private long userID; } @Table(name = "subscriptions") @Entity public class Subscription { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "subscriptionID") private long subscriptionID; @ManyToOne @JoinColumn(name="userID") private User user; }
Этот код аварийно завершает работу:
Вызвано: org.postgresql.util.Исключение PSQLException: ОШИБКА: связь «подписки» не существует
spring.jpa.свойства.спящий режим.диалект = организация.спящий режим.диалект.PostgreSQLДиалект
spring.jpa.база данных-платформа=org.спящий режим.диалект.PostgreSQL10Dialect spring.jpa.hibernate.ddl-авто=создать-отбросить
spring.источник данных.имя класса драйвера=org.postgresql.Драйвер
Код работает для
import javax.persistence.*; @Table(name = "users") @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "userID") private long userID; } @Table(name = "subscriptions") @Entity public class Subscription { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "subscriptionID") private long subscriptionID; }
Как я могу это исправить?
Комментарии:
1. Не могли бы вы проверить, создана ли таблица или возникают ли какие-либо исключения, когда Hibernate создает таблицу?
2. GenerationTarget обнаружила команду принятия исключения : Ошибка при выполнении DDL «ограничение на удаление подписок на таблицы alter FK5ju201bkc08up0b1x2x51mblu» с помощью инструкции JDBC
3. @SimonMartinelli Спасибо, ты помог
Ответ №1:
Просто используйте spring.jpa.hibernate.ddl-auto=update
вместо create-drop