2010-12-06 156 views
6

我必须做一个实体的深层副本。基本上有一个域对象,我必须复制,所以我们需要做的实体及其孩子和孩子的深层副本,并尽快。比我需要设置大家在结构为空的ID,所以他们得到插入新实体。已经有一些讨论herelink text。基本思想是我们自己编写一个深层复制逻辑。我只是想知道是否还有其他更好的方法,比如在数据库级别上执行一些过程。JPA实体的深拷贝

我使用Hibernate作为JPA提供者,所以冬眠具体的解决方案也可以工作。

回答

1

有没有简单的方法深入克隆Java中的对象;因此Hibernate对此没有特别的支持。这就是说:您可以从深度复制代码访问Hibernate注释,并使用它来确定要执行的操作 - 甚至可以添加自己的注释(以停止深度复制代码克隆静态主数据)。

所以应该可以写这种方式工作,并使用@Id注释和你们中的一些编码规则来实现这一目标的实现。

使用存储过程也可能工作,这取决于您使用的数据库,以及如何配合你是在SQL上。但由此产生的代码将是难以为主,测试和理解。所以我建议反对它。