有时为了好的更新对象,我可以这样写:
session.merge(object);
但有时这还不够 我必须写
object1 = session.merge(object);
session.update(object1);
你能为我解释一下这些方式之间的区别吗?
从休眠会话Javadoc:
将给定对象的状态复制到具有相同标识符的持久对象上。如果当前没有与会话关联的持久实例,它将被加载。返回持久实例。如果给定实例未保存,则保存副本并将其作为新的持久实例返回。给定的实例不会与会话关联。如果关联映射为 ,则此操作级联到关联实例cascade="merge"
。
使用给定分离实例的标识符更新持久实例。如果存在具有相同标识符的持久实例,则会引发异常。如果关联映射为 ,则此操作级联到关联实例cascade="save-update"
。
在以下链接中,您可以找到有关以下内容的其他信息: