spring-data-jpa Hibernate一对一单向:标识符生成异常:为类生成了空ID

j2datikz  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(161)

我在两个表之间建立了一对一Map:

-〉id|姓名
人员状态-〉标识|人员标识|状态

我按照hib用户指南创建了一个一对一的单向Map。
...使用单向@OneToOne关联和@MapsId注解会更有效。
我尝试了以下方法,但是在保存记录时出现了以下异常:

组织休眠标识符生成异常:为类PersonStatusEntity生成的标识为空

第一个
我也试过删除@GeneratedValue(),没有任何运气。

mnemlml8

mnemlml81#

如代码中所写:

removed because I don't want bidirectional

如果确实需要单向关联,请完全删除块

@OneToOne(
    //mappedBy = "person", //removed because I don't want bidirectional
    cascade = [CascadeType.ALL],
    fetch = FetchType.LAZY,
    optional = false,
    orphanRemoval = true
)
var personStatus: PersonStatusEntity

并仅将“一对多”保留在“个人状态”中。
此外,还应删除PersonStatus中的GeneratedValue,因为您尝试使用MapsId注解来使用共享PK。
注意:如果你认为你需要单向关联,那么,你应该在PersonEntity端添加mappingBy。还要注意,只有单向端的一端会很懒。

相关问题