为什么我执行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没有将序列链接到id自动生成。我可以通过下面的查询解决问题。 但是如何让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');
答案 0 :(得分:0)
@SequenceGenerator(sequenceName = "MY_ENTITY_SEQ", name = "MyEntitySeq", allocationSize=1)