2011-03-04 39 views
1

。那些孩子实体的集合(cascale =全部)父实体的子实体的ID和每个孩子的实体拥有宏伟的孩子实体的集合(cascale =所有)。获取刚过父已被保存

给定一个会话,我创建一个grand-child并将其添加到父级的子级的孩子中,并且由于我还修改了层级内的一些其他对象,我在根级(父级)上调用了Session.SaveOrUpdate。

在此之后,我需要的盛大子实体的ID却是0。

现在,如果我还打电话Session.SaveOrUpdate上的大孩子也一样,那么我可以得到它的新的ID。这是正常的行为吗?随着级联设置所有,我会认为我可以在保存父母时获得id。

任何启示?

+0

?并将FlushMode设置为Commit? – dotjoe 2011-03-04 19:08:13

+0

@dotjoe:是的,通过身份。我没有更改FlushMode,所以我猜它默认是自动的? – 2011-03-04 20:28:20

+0

是新的实体保存到数据库时,ID还是0? – 2011-03-04 21:17:14

回答

1

SaveOrUpdate,叫一个已经持久性接口上时,什么都不做。

您可以拨打session.Persist(parent),这将级联,或致电session.Save(grandChild)因为你已经做(有没有错的,虽然我不知道你需要什么ID为)的身份产生

+1

你说“什么也不做”,但只是调用SaveOrUpdate后,我可以看到新的大孩子在DB。我需要的ID,因为这发生在远程服务与被服务的调用者需要这个ID(这是由JSON返回)。 – 2011-03-06 19:43:51

相关问题