深度复制JPA实体

lal*_*lit 6 hibernate jpa

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

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

Aar*_*lla 1

在 Java 中没有简单的方法来深度克隆对象;因此 Hibernate 对此没有具体支持。

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

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

使用存储过程也可能有效,具体取决于您使用的数据库以及您对 SQL 的适应程度。但生成的代码将很难维护、测试和理解。因此我建议反对。