JPA 条件 API:如何使用 IN 关键字并查询另一个谓词的结果?

Posted

技术标签:

【中文标题】JPA 条件 API:如何使用 IN 关键字并查询另一个谓词的结果?【英文标题】:JPA criteria API: How to use IN keyword and query the result for another predicate? 【发布时间】:2012-11-02 13:40:49 【问题描述】:

抱歉标题不好,我真的不知道如何更好地表达它:

我有以下表结构:

Table A --> Table B  <-- Table C (proceeds) --> Table D(prcoeeding_status)
--------    --------     -------                -------
 aID         bID           cID                   dID
 ...         ....          created             textValue
 f_bID       ....          f_bID       
                           f_dID

意思是A和C有一个外键指向B,C也有一个外键指向D

我有一个这样的谓词(根是表 A):

constraintCondition = (TableA.join("Table B key")
                        .joinList("Table C Key")
                        .join("Table D Key").get("value from table D"))
                        .in(someValues);

这很好用,给了我预期的结果。 现在我需要添加另一个约束,只选择表 C 中日期条目(即“创建”)位于 Startdate 和 Enddate 之间的条目。 我如何将另一个谓词链接到这个谓词,或者我需要如何修改这个谓词,以便获得预期的效果?

编辑:

我在这里得到了这个问题的答案:JPA 2 criteria API: How to select values from various joined tables without using Metamodel?

【问题讨论】:

也许这个链接应该对***.com/questions/5594309/…有帮助 我的问题与提供的链接中的问题不同:我有很多表需要加入,但是我必须针对不同表的谓词进行测试。如果我只是链接谓词测试表 C 的时间是否在正确值之间,然后检查表 D 中的值是否在正确值中,它也会给我结果表 C 中的时间正确,但错误表 D 中的值 【参考方案1】:

请看这里,同样的问题,更好的描述和回答:

JPA 2 criteria API: How to select values from various joined tables without using Metamodel?

【讨论】:

以上是关于JPA 条件 API:如何使用 IN 关键字并查询另一个谓词的结果?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用“IN”创建自定义 Spring JPA 查询?

JPA 如何获取 Criteria API 中使用的参数标记的数量?

jpa 比较复杂的查询和用in关键字

如何在 JPA 命名查询的 IN 子句中使用动态参数?

Spring Data JPA实现简单条件查询

JPA Criteria builder IN 子句查询