Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate JPA实体的深度复制_Hibernate_Jpa - Fatal编程技术网

Hibernate JPA实体的深度复制

Hibernate JPA实体的深度复制,hibernate,jpa,Hibernate,Jpa,我必须做一个实体的深度复制。基本上,我必须复制一个域对象,所以我们需要对实体及其子对象和子对象的子对象进行深度复制。然后,我需要将结构中每个人的id设置为null,以便将它们作为新实体插入。已经有一些讨论和讨论。基本思想是自己编写一个深度复制逻辑。我只是想知道是否还有其他更好的方法,比如在数据库级别本身执行一些过程 我使用hibernate作为JPA提供程序,因此hibernate特定的解决方案也会起作用。在Java中深度克隆对象没有简单的方法;因此Hibernate对此没有特定的支持 这就是说

我必须做一个实体的深度复制。基本上,我必须复制一个域对象,所以我们需要对实体及其子对象和子对象的子对象进行深度复制。然后,我需要将结构中每个人的id设置为null,以便将它们作为新实体插入。已经有一些讨论和讨论。基本思想是自己编写一个深度复制逻辑。我只是想知道是否还有其他更好的方法,比如在数据库级别本身执行一些过程


我使用hibernate作为JPA提供程序,因此hibernate特定的解决方案也会起作用。

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

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

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

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