我必须做一个实体的深层复制。基本上我有一个域对象,我必须复制,所以我们需要很快完成实体及其孩子和孩子的深层复制。我需要将结构中每个人的id设置为null,因此它们作为新实体插入。已经有一些讨论here和link text。基本思想是自己编写深度复制逻辑。我只是想知道是否有其他更好的方法,比如在数据库级别自己做一些程序。
我正在使用hibernate作为JPA提供程序,因此hibernate特定的解决方案也可以工作。
答案 0 :(得分:1)
没有简单的方法可以在Java中深度克隆对象;因此Hibernate对此没有特别的支持。
说:您可以从深层复制代码访问Hibernate注释,并使用它来确定要做什么 - 您甚至可以添加自己的注释(以阻止深层复制代码克隆静态主数据)。
因此应该可以编写一个以这种方式工作的实现,并使用@Id
注释和一些编码规则来实现这一点。
使用存储过程也可能有效,具体取决于您使用的数据库以及您在SQL中的适合程度。但是生成的代码很难主,测试和理解。所以我建议反对。