gpt4 book ai didi

sql - hibernate.hbm2ddl.auto 不会将序列链接到 id 列

转载 作者:行者123 更新时间:2023-12-03 21:23:13 26 4
gpt4 key购买 nike



为什么我得到 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');

最佳答案

  • 给@SequenceGenerator 分配一个allocationSize:@SequenceGenerator(sequenceName = "MY_ENTITY_SEQ", name = "MyEntitySeq", allocationSize=1)
  • 检查您使用的方言
  • 将“hibernate.id.new_generator_mappings”设置为“true”
  • 关于sql - hibernate.hbm2ddl.auto 不会将序列链接到 id 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50217859/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com