【发布时间】:2018-09-12 14:10:00
【问题描述】:
我对 JPA 和休眠有一个问题,我无法弄清楚。 我有两个带有数据的单独实体,我想从 table1 读取/写入数据到 table2。
表 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 实现这一目标?
【问题讨论】:
-
您已经描述了您的目标,但我不知道您在实现该目标时遇到了什么问题。
-
您的要求可以使用数据库触发器来完成。 JPA 中的等效功能是通过“实体生命周期事件”和“实体监听器”提供的。我建议坚持使用 DB 触发器,因为如果表上的操作不是通过 JPA 即 CLI 中的 SQL 查询,则不会触发 JPA 事件。
-
JPA 不适用于将数据从一个表复制到另一个表。一张表代表一类,另一张表代表另一类。创建不同类型的对象以将数据放入相应的表中。由于您不发布您正在尝试的内容,因此猜测毫无意义