【问题标题】:How do I use DISTINCT ON in queryDSL with booleanBuilder parameter?如何在带有 booleanBuilder 参数的 queryDSL 中使用 DISTINCT ON?
【发布时间】:2016-10-31 23:30:45
【问题描述】:

在 Spring Data JPA 中,我使用 BooleanBuilder 创建了过滤搜索。我项目中的查询使用@QueryQueryDSL。但是当我面对DISTINCT ON 和动态过滤器时,我很难制定一个查询。我很难在 QueryDSL 中构建与此等效的内容。

SELECT DISTINCT ON (name) *
 FROM foo_table
 WHERE <my filtered booleanBuilder>
 ORDER  BY name, version_number DESC;

这可能吗?任何替代或帮助表示赞赏。谢谢!

【问题讨论】:

    标签: hibernate postgresql jpa spring-data-jpa querydsl


    【解决方案1】:

    DISTINCT ON 是 PostgreSQL 供应商特定的 SQL 子句。您不能将它与 JPA 一起使用(本机查询除外)。直接与 SQL 一起使用。

    【讨论】:

    • 我不能使用本机查询,因为 WHERE 子句不固定。您对解决方法有什么建议吗?在数据库中,我有重复的名称,但我只想获取该名称的最高版本以及考虑到的 WHERE 子句。
    • 我不确定你的意思。为什么不能使用本机查询?您也可以使用本机查询编写动态 SQL...
    • 我认为有一种方法可以通过BooleanBuilder 进行过滤,因为它更容易实现。但我想复杂查询是不可能的,所以,是的,我现在在我的代码中使用本机查询。看起来很痛苦,但现在可以了。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2021-11-22
    • 2021-09-29
    • 1970-01-01
    • 2020-01-06
    • 2021-10-24
    • 2020-12-01
    相关资源
    最近更新 更多