gpt4 book ai didi

java - 如何在 Hibernate 中复制引用?

转载 作者:行者123 更新时间:2023-12-01 15:30:19 24 4
gpt4 key购买 nike

我有两个类“Method”和“BackendMethod”,它们处于一对多关系。我在 BackentMethod.java 中的“方法”集上使用了mappedBy注释。

我制作了实例 methodOriginal 的副本,称为 methodCopy 并将其保留。现在我想让 methodOriginal 引用的所有 BackendMethods 也能被 methodCopy 引用。

我不想复制它们,只需将它们再次分配给新的“方法”即可。

当我像这样将它们分配给他们时:

methodCopy.setBackendMethoden(methodOriginal.getBackendMethoden()));

我得到一个 HibernateException:

HibernateException: Found shared references to a collection: Method.backendMethoden

当我像这样复制整个集合时:

methodCopy.setBackendMethoden(new HashSet<Backend>(methodOriginal.getBackendMethoden())));
methodCopy.persist();

此后该集合将为空。

我做错了什么?

最佳答案

I don't want to copy them, just assign them to the new 'Method' again.

这不起作用,因为您已将 method 和 backendMethod 之间的关系定义为 oneToMany。一个 BackendMethod 实体只能被一个 Method(原始)实体引用。如果您想要 MethodCopy 具有相同的 backendMethod 集,那么您需要一组新的 backendMethod 对象。在这种情况下,这些后端方法实体会在您的数据库中重复(当然具有不同的 PK)。

或者您可以将关系更改为多对多。

关于java - 如何在 Hibernate 中复制引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9602351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com