gpt4 book ai didi

sql - JPA 中的自定义连接条件

转载 作者:行者123 更新时间:2023-12-02 07:28:34 25 4
gpt4 key购买 nike

是否可以在 JPA 中指定自定义连接标准(jpql 或通过标准 api?

select .. from .. join ... on (... <custom criteria> )   

我需要这个的原因是因为我想加入一组日期范围内的表(一个是带有事实堆叠的历史表)

** 更新 **

可以在 JPA (2.1 >) 中指定额外的连接条件/标准。请参阅已接受的答案 (zxcf)。

Hibernate 注意:虽然可以使用 JOIN .. ON 或以编程方式使用 javax.persistence.criteria.JOIN 指定额外的连接条件,但您不能使用引用不同表的条件,只能使用引用相同表的条件(和层次结构中不更高)支持请参阅: https://hibernate.atlassian.net/browse/HHH-7321

最佳答案

您不能使用 JOIN除非您在两个实体之间有明确的关系,否则关键字 - 如果您有关系,则可以使用:

SELECT e FROM Employee e JOIN e.projects p

您还可以缩小您的 JOIN通过使用 ON关键字(请注意,这适用于 JPA 2.1 ):
SELECT e FROM Employee e JOIN e.projects p ON p.name LIKE 'As%'

如果要定义 JOIN连接两个没有定义关系的实体,您应该在 WHERE 中使用附加条件条款:
SELECT e FROM Employee e, Projects p WHERE e.projectId = p.id

更新

如果您使用 EclipseLink (或者它是您的 JPA 提供程序)在 2.4 或更高版本中,然后 您可以JOIN .. ON 中使用自定义条件子句,因为 EclipseLink 还支持在两个根级别对象之间使用 ON 子句。
SELECT e FROM Employee e LEFT JOIN MailingAddress a ON e.address = a.address

Here's reference

关于sql - JPA 中的自定义连接条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24861019/

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