java - 如何让多对多关系船的双方拥有?

标签 java jpa many-to-many eclipselink

我有一个类 Group 和一个类 User
其中Group和User是多对多的关系
如果我更改 usergroups 并保存 user 我想更新 groups
反之亦然,如果我更改了 groupuser 并保存 group 我希望 user 成为已更新
我是否必须在两个类中都设置 mappedBy
注意:我正在使用 eclipseLink

最佳答案

对于多对多关系,您需要更新双方的关系数据以保持一致。

不幸的是,没有捷径。

您可以做的是在实体或第三方类中创建一个方法来封装一致的更新。

谨防无限循环 - 不要在两个实体类中实现对另一个实体的传播。

大致是这样的:

public class User
...
public void addGroup(Group g){
   groups.add(g);
   g.addUser(this);
}

public class Group
...
public void addUser(User u){
   users.add(u);
   u.addGroup(this);
}

我假设关系注释上存在适当的级联设置。

关于java - 如何让多对多关系船的双方拥有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20992007/

相关文章:

java - Jboss 服务器错误 : Failed to start service jboss. deployment.unit ."jbpm-console.war"

java - 哪种 DBMS 最适合此要求? (大、结构简单、海量写入/快速读取、Java)

java - 打包一个可运行的 JPA jar,将 persistence.xml 放在外面

postgresql - PostgreSQL 中与自身的多对多关系

mysql - 全文搜索添加与其他表的关系但返回 0 个结果

many-to-many - 如何删除 Entity Framework Core 中的多对多关系?

java - 从文件中读取数据并存储在两个数组中

java - 有什么方法可以重构这段代码或以紧凑的形式重写它吗?

java - 嵌入关系

java - Spring Boot JPA,存储库不删除记录