此注释:
@oneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="person")
有两个后果:
mappedBy
暗示这Car
是关系的拥有方。这意味着,每当要在Car
和之间建立关系时Person
, 都需要通过将Car.person
属性设置为适当的值来实现。对的更改Person.cars
将被Hibernate忽略。cascade=CascadeType.ALL
意味着每当您保存一个时Person
,Hibernate还将在其中包含的所有实体上调用保存操作Person.cars
结果:您正在调用
Session.save()一堆
Car没有
Car.person正确设置属性的实体。
解决方案:要么更改关系的所有权(请注意,如果您不想创建额外的数据库表,则还需要
@JoinColumn打开
Person.cars),或者循环遍历
Person.cars并
Car.person在每个属性中正确设置属性。
cascade=CascadeType.ALL建议第一个解决方案更适合您的用例。



