1

在hibernate中有很多关于set cascade to "all, delete"之类的信息,但是我想知道set cascade to "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". 我的问题是:我将级联设置为“无”,如果我向父级添加一个子#1,然后我保存父级,休眠可以向表 parenthaschildsTable 插入一条新记录,但不能级联子级?

4

1 回答 1

3

我将级联设置为“无”,如果我将一个child#1添加到父级,然后我保存父级,休眠可以向表parenthaschildsTable插入一条新记录,但不能级联子级?

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

于 2010-08-27T04:14:59.897 回答