假设我有一个名为Player的类,它持久化为hibernate,并且具有生成的ID和复合自然ID。玩家是一个复杂的类,它存储了也产生了ID的其他对象的层次结构。休眠保存或更新没有主键的对象
我可以查询json的web服务来获取Player的实例。 json被Jackson解析,构建一个完整的Player对象,除了它不会生成任何生成的Ids。我基本上想要在这个播放器的实例上执行saveOrUpdate。
一个选项是通过自然ID查询Player对象的数据库。如果没有对象返回,请进行保存。否则,手动将Player对象(及其所有字段)的所有值从Web服务中复制到数据库中的对象,然后执行更新。我不喜欢这个选项,因为它看起来效率低下,并且会包含很多额外的代码。
我更愿意做的就是将生成的Ids从数据库对象复制到Web服务中的对象,然后对其进行更新。不幸的是,我一直无法完成这项工作。我想用合并()会做的伎俩,但我得到这个异常:
org.hibernate.HibernateException:多行与指定的标识符发现
什么是处理这种情况的最好方法是什么?
尝试'了Session.update(OBJE)'insted的合并() – jos