两个附加的hibernate对象引用相同的数据,哪一个将被保存?

时间:2013-10-17 05:32:43

标签: java hibernate

在一个休眠会话中。

我首先通过使用session.get(id,class)检索一条记录来获得一个对象,比如A,我对对象A进行了一些更改。

然后我使用criteria.list()进行搜索,以获得一个对象列表,其中包含引用A引用的相同数据对象的对象B.我还对对象B进行了一些更改。

在我提交会话后,我所做的更改将被保留到数据库,A或B或两者之间?

2 个答案:

答案 0 :(得分:0)

  

每次从数据库中获取内容时,它都会创建一个新内容   宾语。即使对象的值是相同的,它也是内部的   不同。

     

如果您只提取一次值并创建副本,则会出现这种情况   然后它只是创建对象的引用,所以任何   第一个的变化也会反映到第二个。

     

当您提交更改时,将保存最后一个对象的值   是表内的值。原因是,价值   先前保存了上一个对象并被其覆盖   第二

答案 1 :(得分:0)

无!您将收到一个异常说明: org.hibernate.NonUniqueObjectException:具有相同标识符值的其他对象已与会话关联,除非您使用merge()方法手动管理它们。