gpt4 book ai didi

java - JPA 中的表联接 - 创建包含联接的实体

转载 作者:行者123 更新时间:2023-12-01 04:35:50 24 4
gpt4 key购买 nike

我有一个名为“Person”的实体。它通过表 pers_addr_tb 连接到 Address 实体。所以 Person 实体看起来像这样

@ManyToMany(fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
@JoinTable(name = "pers_addr_tb", joinColumns = @JoinColumn(name = "pers_ID"),
inverseJoinColumns = @JoinColumn(name = "addr_ID"))
public List<Address> addresses;

现在假设我首先创建 Person,然后创建一些 Address 实体。如果pers_addr_tb不存在会发生什么?它是在创建 Person 和 Address 时创建的吗?

为了进行测试,我们使用内存中的 HSQL 数据库(带有 OpenEJB)。因此,我们需要根据需要动态创建实体。但pers_addr_tb没有定义为实体。

最佳答案

您创建一个 Person 实例并保留它。 JPA 在 person 表中插入一行。

然后创建一个 Address 实例并保留它。 JPA 在地址表中插入一行。

然后将该地址添加到此人的地址列表中,Hibernate 会在连接表中插入一行。

这实际上是部分正确的,因为插入实际上将在您提交事务时完成。但像 JPA 这样的 ORM 的原理是,您在实体中指定的映射告诉 JPA 实体及其关联必须如何以及在何处持久化。

关于java - JPA 中的表联接 - 创建包含联接的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17374186/

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