gpt4 book ai didi

java - JPQL 带条件的左外连接

转载 作者:行者123 更新时间:2023-12-01 11:09:41 26 4
gpt4 key购买 nike

我在 jpa 中有这样的查询(没有工作):

entityManager.createQuery("select new pl.proama.wd.model.PolicyDTO2(pol.policyID) from Policy pol LEFT JOIN pol.claim c  WHERE c.claimID=:id").setParameter("id", "20700003915").getResultList();

数据库表如下:

策略表 -->(Policy_id(pk),其他列)

声明表 -->(Claim_id(pk)、Policy_id、其他列)

一项保单可以加入多项 claim

正常的plsql查询(工作):

Select pol.POLICY_ID 
from Policy pol LEFT JOIN CLAIM c
on(c.POLICY_ID=pol.POLICY_ID)
WHERE c.CLAIM_ID='20700003915';

我认为我在加入 claim 类(class)的政策类(class)中犯了错误。

@OneToOne
@JoinColumn(name = "POLICY_ID")
private Claim claim;

我做错了什么?

最佳答案

c.CLAIM_ID 条件从 WHERE 子句移至 ON 子句以获得真正的 LEFT JOIN 行为。 (在 WHERE 子句中使用 c 条件,它作为常规内连接执行。)

Select pol.POLICY_ID 
from Policy pol LEFT JOIN CLAIM c
on (c.POLICY_ID=pol.POLICY_ID
AND c.CLAIM_ID='20700003915');

关于java - JPQL 带条件的左外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32518761/

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