在一个休眠会话中。
我首先通过使用session.get(id,class)检索一条记录来获得一个对象,比如A,我对对象A进行了一些更改。
然后我使用criteria.list()进行搜索,以获得一个对象列表,其中包含引用A引用的相同数据对象的对象B.我还对对象B进行了一些更改。
在我提交会话后,我所做的更改将被保留到数据库,A或B或两者之间?
答案 0 :(得分:0)
每次从数据库中获取内容时,它都会创建一个新内容 宾语。即使对象的值是相同的,它也是内部的 不同。
如果您只提取一次值并创建副本,则会出现这种情况 然后它只是创建对象的引用,所以任何 第一个的变化也会反映到第二个。
当您提交更改时,将保存最后一个对象的值 是表内的值。原因是,价值 先前保存了上一个对象并被其覆盖 第二
答案 1 :(得分:0)
无!您将收到一个异常说明: org.hibernate.NonUniqueObjectException:具有相同标识符值的其他对象已与会话关联,除非您使用merge()
方法手动管理它们。