在多对一关联中对外键进行级联

时间:2012-06-04 05:06:51

标签: java mysql hibernate

我有两个有父母和子女关系的课程

<class name="parent">   
   <id name="id">    
      <generator class="assgned"/>   
   </id>   
   <property name="currency"/>
   <property name="description" length="400"> 
</class> 

<class name="child"> 
  <id name="id">    
<generator class="native"/>   
</id>
   <property name="someprop1"/>
   <property name="someprop2">
   <many-to-one class="Parent" column="parent_field" name="parent" cascade="save-    
    update" />
</class> 

当我在child中插入一个新行时,它会更新子类中的现有行,而不是插入新行并使用外键映射新id。

我认为在选择生成器类和级联选项时我错了。请帮忙。

1 个答案:

答案 0 :(得分:0)

cascade的映射应该在Parent类中,并指向子类的方向。 如果您在子列表中添加一个新的子对象以及旧的子对象,则保存您的父对象..如果已配置,它将保存在具有自动递增ID的新行中,请记住,如果您将父级保存,并且所有孩子都在那里在对象中设置主键,它们将更新DB中的现有行,因为它是正确的工作行为。