在迁移到Hibernate 6和Spring Boot 3之后,插入序列不符合尊重 我有一个实体 @entity @table(name =“ test1”)公共类Test1 { @ID @nonnull @tostring.include @Column(name =“ GUID”) 私人UUID GUID; @nonnull @column(name =“ nam ...

问题描述 投票:0回答:1
儿童实体:

@Entity @Table(name = "test2") @Data @Getter @Setter @NoArgsConstructor(access = PROTECTED, force = true) @AllArgsConstructor(access = PRIVATE) @Builder public class Test2 { @EmbeddedId @EqualsAndHashCode.Include @ToString.Include ImpactKey id; @NonNull @Column(name = "object_id", updatable = false, insertable = false) private UUID object; @ManyToOne(fetch = FetchType.LAZY) @EqualsAndHashCode.Exclude @ToString.Exclude @JoinColumn(name = "object_id", referencedColumnName = "guid", updatable = false, insertable = false) private Test1 test1Id;
在我的测试中我做:

@Autowired private EntityManager db; Test1 test1 = createDefTest1(); //I do set guid from Test1 in test1Id from Test2 Test2 test2 = createDefTest2(test1); db.persist(test1); db.persist(test2); //some code Object t = someJpa.findById(someid);
当我称呼FindbyId时,EntityManager DB开始重置后gre数据库中的状态,在我看到的日志中
如果之前,在迁移之前,test1首先始终插入父母,现在首先插入test2,我得到了一个外键约束错误,即test1中某些ID不存在
为什么插入顺序会改变?我该如何解决?

few方法可以解决此问题:

@OneToMany(mappedBy = "test1Id", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) private Set<Test2> contacts = new HashSet<>();

java spring postgresql spring-boot hibernate
1个回答
0
投票

db.persist(test1); db.flush(); // Force flush to ensure Test1 is in the database db.persist(test2);

3。使用@mapsid对儿童实体

@ManyToOne(fetch = FetchType.LAZY) @MapsId("objectId") // assuming your embedded ID has an objectId field @JoinColumn(name = "object_id") private Test1 test1Id;

检查冬眠配置
在Hibernate 6中,检查您是否更改了与订单操作或批处理处理相关的任何设置。该物业可能在这里很重要。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.