我有一个hibernate接口的mysql数据库,其中包含大量不同类型的对象,其中一些对象是由JADE代理中运行的其他代码片段定期检索和更改的。由于检索对象的方式(在查询中,返回对象的集合),它们似乎不是由实体管理器管理的,并且当它们被传递给没有实体管理器工厂或经理的代理时肯定不会被管理
数据库中的对象在代理之间传递,然后返回数据库,此时,我想更新数据库中对象的版本 - 但每次我合并对象时,它都会创建一个新对象数据库中的对象。
我很确定我没有正确使用合并方法。任何人都可以提出一个好方法,我可以将更新的对象与现有的数据库对象组合,而无需事先知道对象的哪些属性已更改?可能是搜索现有对象并删除它,然后添加新对象,但我不确定如何在不搞乱PKeys等的情况下执行此操作
答案 0 :(得分:0)
Hibernate具有saveOrUpdate方法,该方法可以保存对象,也可以根据具有相同ID的对象是否存在来更新对象:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/objectstate.html#objectstate-saveorupdate