Вопрос
Почему я получаю исключение NULL not allowed for column "ID"
при выполнении INSERT INTO PUBLIC.MY_ENTITY (name) VALUES ('test name');
?
Настройка
Я использую Spring Boot и Hibernate. Spring Boot запускается со свойствами:
hibernate.hbm2ddl.auto=update
spring.jpa.hibernate.ddl-auto=update
У меня есть сущность:
@Entity
@Table(name = "MY_ENTITY")
public class MyEntity {
@Id
@SequenceGenerator(sequenceName = "MY_ENTITY_SEQ", name = "MyEntitySeq")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MyEntitySeq")
private Long id;
@Column(unique = true, nullable = false)
private String name;
// getters & setters
// ...
}
Таблица была сгенерирована при запуске приложения.
Я могу доказать, что последовательность была создана следующим запросом:
SELECT * FROM INFORMATION_SCHEMA.SEQUENCES WHERE SEQUENCE_NAME = 'MY_ENTITY_SEQ'
приписка
По какой-то причине Hibernate не связывает последовательность с автоматической генерацией идентификатора. Я могу решить проблему с помощью запроса ниже. Но как заставить Hibernate сгенерировать запрос ниже?
ALTER TABLE PUBLIC.MY_ENTITY ALTER COLUMN ID BIGINT DEFAULT (NEXT VALUE FOR PUBLIC.MY_ENTITY_SEQ) NOT NULL NULL_TO_DEFAULT SEQUENCE PUBLIC.MY_ENTITY_SEQ;
INSERT INTO PUBLIC.MY_ENTITY (name) VALUES ('test name');