gpt4 book ai didi

java - 如何获取多对多关系实体

转载 作者:行者123 更新时间:2023-11-29 02:54:09 25 4
gpt4 key购买 nike

表结构如下

TABLE1
T1_ID
T1_Col1

TABLE2
T1_ID
T3_ID

TABLE3
T3_ID
T3_COL1

Table1Table3 由中间表 Table2 连接。现在我只有 T1_ID,我想从 Table3 中获取与 T1_ID 关联的所有行。一个简单的 SQL 查询是

select T1.*, T3.* 
from TABLE1 T1, TABLE T2, TABLE3 T3
where T1.T1_ID = T2.T1_ID
and T2.T3_ID = T3.T3_ID

那么我如何在 hibernate/jpa 中执行此操作...我还没有为 Table1Table2Table3 编写实体类>。我想将此查询作为 Table1 的一部分执行,这样我就可以编写一个方法 entity.fetchAssociatedTable3()。我能想到的最简单的方法是在 fetchAssociatedTable3 中,我可以像上面提到的那样放置自定义查询。但是因为我使用的是 hibernate/jpa 我想知道是否有更好的方法来做到这一点。

更新显然,我的问题还不够清楚。我想做一些用户 Dragan Bozanovic 提到的事情。但是,我想知道的是

  1. 我将如何编写 Table1 实体?我的意思是我将在列等上放置什么注释,这将使 hibernate/jpa 理解该列通过 Table2

  2. Table3 列相关
  3. 我想如果问题 1 得到了回答,那么 getEntity3s() 方法就很难写了。但是,如果(对于菜鸟)有什么我需要知道的,我将不胜感激。

最佳答案

假设您将在 Entity1(映射到 TABLE1)和 Entity3(映射到 TABLE3),您可以:

1) 通过 id 读取 Entity1 并从中获取所有 Entity3:

Entity1 entity1 = entityManager.find(Entity1.class, entity1Id);
Collection<Entity3> entity3s = entity1.getEntity3s();

2) 或者,执行 JPQL 查询以获取 Entity3 而无需加载 Entity1 实例:

select distinct e3 from Entity3 e3 join Entity1 e1 where e1.id = :entity1Id

关于java - 如何获取多对多关系实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32591375/

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