gpt4 book ai didi

java - 引用JPA中的一个表

转载 作者:行者123 更新时间:2023-12-02 10:49:16 24 4
gpt4 key购买 nike

我在 JPA 和 hibernate 方面遇到了一个我无法解决的问题。我有两个带有数据的独立实体,我想从表 1 读取/写入数据到表 2。

表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 实现这一目标?

最佳答案

我相信您想要做的是一对多关系,而不是多对多关系,如注释中所示。多对多关系是指当您使用第三个表连接两个表时,该表只有两个表的 id 对。

@Entity
@Table(name = "table1")
@Data
public class Table1{

@OneToMany(cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
}, orphanRemoval = true)
private List<Table2> data = new ArrayList<>();
}

需要在Table2中引用Table1对象

@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 版之前遗漏的内容。

关于java - 引用JPA中的一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52297215/

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