我对JPA和hibernate有一个问题,我无法理解。我有两个有数据的独立实体,我想从table2中从table1中读取/写入数据。
表1
@Entity
@Table(name = "table1")
@Data
public class Table1{
@ManyToMany(cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
})
@JoinTable(
name = "table2",
joinColumns = @JoinColumn(name = "tableId", referencedColumnName = "id"))
private List<Table2> data = new ArrayList<>();
}表2
@Entity
@Table(name = "table2")
@Data
public class Table2{
private String name;
private String address;
}因此,每当我更新table1并包含名称和地址时,我都希望将其写入table2,当获取表1时,我希望与对象一起为列表中的所有名称和地址提供服务。如何使用JPA和Hibernate实现这一点?
发布于 2018-09-13 07:27:58
我相信你们试图做的是一对多的关系,而不是像你们注解中所看到的多对多的关系。多对多关系是当您使用第三个表连接这两个表时,这两个表都有id对。
@Entity
@Table(name = "table1")
@Data
public class Table1{
@OneToMany(cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
}, orphanRemoval = true)
private List<Table2> data = new ArrayList<>();
}您需要在Table1中引用Table2对象
@Entity
@Table(name = "table2")
@Data
public class Table2{
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "table1_id")
private Table1 owner;
private String name;
private String address;
}我还添加了orphanRemoval = true,因为没有它,人们常常会感到困惑,他们已经从列表中删除了一些东西,但是下次获取数据时,它仍然存在。这是JPA规范在2.1版之前遗漏的东西。
https://stackoverflow.com/questions/52297215
复制相似问题