我在我的类中使用 cascade = CascadeType.PERSIST ,对应于下面给出的子表(PAT)。
...
@ManyToOne(cascade=CascadeType.PERSIST)
private Neighbourhood nh;
...
邻居类代表父表(NH)。
SQL生成:
Hibernate: select neighbourh_.CODE, neighbourh_.NAME as NAME2_0_ from NH neighbourh_ where neighbourh_.CODE=?
Hibernate: insert into PAT (DOB, DOOR_NUM, EMAIL, FIRST_NAME, HEIGHT, IS_MALE, LAST_NAME, LINE1, LINE2, MOBILE, nh_CODE, PHONE_HOME, PHONE_OFFICE, POSTAL_CODE, WEB, WEIGHT, ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
问题
当我尝试将记录保存到子表(PAT)时,不会创建进入父表(NH)的条目。我希望在父表和子表中创建一个条目。
这不是CascadeType.PERSIST应该做的吗?
答案 0 :(得分:1)
是的,这就是坚持应该做的事情。鉴于上面的细节我不能确定为什么它没有插入,但我可以猜测:
当您使用子表(Pat)插入时,您的Neighborhood
实体具有已存在于DB中的PrimaryKey code
。这就是它在第一个查询中查找它的原因。因此,如果邻居代码不在那里,它将为它插入一个SQL。