深度复制JPA实体

时间:2010-12-06 11:28:05

标签: hibernate jpa

我必须做一个实体的深层复制。基本上我有一个域对象,我必须复制,所以我们需要很快完成实体及其孩子和孩子的深层复制。我需要将结构中每个人的id设置为null,因此它们作为新实体插入。已经有一些讨论herelink text。基本思想是自己编写深度复制逻辑。我只是想知道是否有其他更好的方法,比如在数据库级别自己做一些程序。

我正在使用hibernate作为JPA提供程序,因此hibernate特定的解决方案也可以工作。

1 个答案:

答案 0 :(得分:1)

没有简单的方法可以在Java中深度克隆对象;因此Hibernate对此没有特别的支持。

说:您可以从深层复制代码访问Hibernate注释,并使用它来确定要做什么 - 您甚至可以添加自己的注释(以阻止深层复制代码克隆静态主数据)。

因此应该可以编写一个以这种方式工作的实现,并使用@Id注释和一些编码规则来实现这一点。

使用存储过程也可能有效,具体取决于您使用的数据库以及您在SQL中的适合程度。但是生成的代码很难主,测试和理解。所以我建议反对。