【问题标题】:Questions about query several tables through JPA关于通过JPA查询多张表的问题
【发布时间】:2013-07-04 10:57:51
【问题描述】:

最近,我需要在我的项目中使用 JPA。 然而,我遇到了一些困难。 JPA 似乎比我想象的要难。 所以,我在这里发布我的问题,希望有人可以帮助我。

有两个表操作分析,sql如下:

select op_id from operation where flag = 1 
union
select an_id from analysis where on_type = "processed";

op_id 和an_id 是两个列名,实际上含义相同。

谁能帮我写一个 JPA 版本? 我对此非常感激。 非常感谢。

【问题讨论】:

    标签: sql database spring jakarta-ee jpa


    【解决方案1】:

    JPQL 不支持联合。

    您有四个选择:

    1. 您可以在数据库中创建一个视图来执行联合,然后映射到该视图
    2. 编写一个执行联合的本机 SQL(因为您只需要 ID,这是一个有效的选项)
    3. 如果 ID 不同,您可以运行两个查询,并连接结果列表(如果不不同,您可以使用 Sets 过滤重复项)
    4. 如果您使用最新的(至少 >=2.4)EclipseLink 作为 JPA 提供程序,您可以使用UNION

    在此处查看this question。

    【讨论】:

    • 另外,如果使用 EclipseLink,则支持 UNION (>=2.4)
    • 谢谢,@James,对此一无所知。更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    相关资源
    最近更新 更多