Hibernate:级联问题

时间:2010-08-27 02:58:39

标签: java hibernate cascade nhibernate-cascade

在hibernate中,有很多关于set cascade to“all,delete”等的信息, 但是我想知道set cascade对“none”的影响

现在我有一个类Parent,它是子类Child,

class Parent{
List<Child> childs;
 ....}

并在文件parent.hbm.xml中(我省略了其他内容)

   <class name="Parent" table="parent" >
 <bag name="childs"  lazy="false" table="parenthaschildsTable" cascade="none">
    <key>
         <column name="parentId" not-null="true"/>
    </key>
    <one-to-many  class="Child">
         <column name="childId" not-null="true"/>
    </one-to-many>
   </bag>

保存父级时,我不想级联更新他的孩子,所以我设置了cascade="none"。 我的问题是: 我设置的级联是“none”,如果我将一个子#1添加到父级,那么我保存父级,可以将hibernate插入一个新记录到表parenthaschildsTable,但不能级联Child吗?

1 个答案:

答案 0 :(得分:3)

  

我设置的级联是“none”,如果我将一个子#1添加到父级,那么我保存父级,可以将hibernate插入一个新记录到表parenthaschildsTable,但不能级联Child吗?

您更改了父级(通过修改集合),因此Hibernate将在连接表中插入一条记录以反映保存时(何时应该发生?)。当然,只有当孩子已经分配了标识符值时,这才会成功。但你为什么不尝试呢?