更新休眠嵌套的一对多实体关系

时间:2019-02-05 21:29:00

标签: hibernate jpa hibernate-mapping hibernate-onetomany hibernate-cascade

我正在尝试更新一个嵌套了一对多关系的父实体,如下所示:

@Entity
Class Zone {
 @Id
 @Column(name = "ID")
 int id;

 @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = 
 "zone", fetch = FetchType.EAGER)
 @Fetch(FetchMode.SELECT)
 private List<ZoneGroup> zoneGroups = new ArrayList<>();

}

 @Entity
 Class ZoneGroup {
 @Id
 @Column(name = "ID")
 int id;

 @ManyToOne(fetch = FetchType.EAGER)
 @JoinColumn(name="ZONE_ID")
 private Zone zone;


 @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = 
 "zoneGroup", fetch = FetchType.EAGER)
 @Fetch(FetchMode.SELECT)
 private List<ZoneCriteria> zoneCriterias = new ArrayList<>();

 }

 @Entity
 Class ZoneCriteria {
 @Id
 @Column(name = "ID")
 int id;

 @ManyToOne(fetch = FetchType.EAGER)
 @JoinColumn(name="ZONE_GROUP_ID")
 private ZoneGroup zoneGroup;

}

我正在尝试使用级联更新父实体。通过在服务层中设置ZoneGroup实体,使用JPA实体管理器使用ALL(同时更新了子实体),但是级联未应用于ZoneCriteria,因此无法插入休眠抛出用于插入ZoneCriteria实体的null。 注意:我正在使用级联选项进行更新。

问题: 1.我的映射从上方是否正确 2. Hibernate是否支持嵌套实体映射 3.如果上述问题是肯定的,那么如何通过设置Zone属性来更新所有子实体(ZoneGroup和ZoneCriteria)。

任何帮助将不胜感激。谢谢

0 个答案:

没有答案