我有两个具有多对多关系的模型。 我为每一层创建了存储库、服务和 Controller 层。 现在,当我向其中每个人发出 POST 请求时,它就会被创建,但是我们如何才能使 它们之间的连接,因为创建了第三个表,其中包含每个模型的 PK。 GET 请求也是如此,它返回一个空列表。
任何人都可以向我解释一下如何在具有多对多关系的两个模型中进行 POST 和 GET 并在它们之间建立链接。
谢谢
最佳答案
根据您的 JPA 实现,您只需通过注释模型字段即可实现关系。例如,这里我使用 Hibernate 和 java.persitence 注释来实现这种关系。
我有一个类 Account
,它有一个 Subject
列表。同样,我的 Subject
有一个 Account
列表作为字段。为了映射关系,我以这种方式使用 java.persitence 注释:
类Account.java
private List<Subject> subjects;
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(
name = "account_subject",
joinColumns = { @JoinColumn(name = "account_id") },
inverseJoinColumns = { @JoinColumn(name = "subject_id") }
)
public List<Subject> getSubjects() {
if(subjects == null) {
return new LinkedList<Subject>();
}
return subjects;
}
类Subject.java
private List<Account> accounts;
@ManyToMany(mappedBy = "subjects")
public List<Account> getAccounts() {
return accounts;
}
这将自动创建一个名为 account_subject
的联接表,其中包含两列 account_id
和 subject_id
以及行 cascade = { CascadeType .ALL }
将确保在两个实体上执行任何操作(更新、删除等)。
要使用 Hibernate 保存帐户实体,您只需设置必填字段,例如:
List<Subject> mySubjects = new List<Subject>();
mySubjects.add(mySubject);
myAccount.setSubjects(mySubjects);
在您的存储库类中,我们使用 Hibernate 方法 saveOrUpdate()
来保存
sessionFactory.getCurrentSession().saveOrUpdate(myAccount);
其中 sessionFactory
是您的 Hibernate SessionFactory 对象。
关于java - 在 Spring 中保存两个模型之间的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61154607/