spring-data-jpa - 如何使用规范在spring data jpa中选择多个对象

标签 spring-data-jpa criteria-api

我有以下@Query,它工作得很好。但现在我有一个场景,屏幕需要一个过滤器,它将向查询添加一些 where 子句。

@Query

("
        SELECT 
            ef, ed, ea
        FROM EntityA ea
            JOIN EntityB eb
            JOIN EntityC ec
            JOIN EntityD ed
            JOIN EntityE ee
            JOIN EntityF ef
        WHERE
            TRUNC(ee.date) = TRUNC(:date)

        -- conditions based on screen filter parameters
        AND ef.amount = :amount
        AND LOWER(ec.name) LIKE LOWER('%' || :name || '%')
        AND ec.projectId = :projectId
        AND ed.divisionId = :divisionId

")

发现有一个不错的Specifications支持根据要求动态创建查询。

但不确定如何使用 Specifications 一次性选择多个对象 efedea ,否则我必须再编写 4 个查询才能根据过滤条件返回结果。

注意出于性能原因,不使用预先加载,因为实体由多个服务使用。

最佳答案

规范仅用于动态创建 where 子句。

如果您还需要控制 select 子句,我建议使用 JPA Criteria API里面 custom method您的存储库的。

关于spring-data-jpa - 如何使用规范在spring data jpa中选择多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58120018/

相关文章:

java - Spring Data JPA 如何为实现公共(public)接口(interface)的两个域类创建单个存储库?

java - 使用 Criteria API 根据条件计算连接表的结果

java - 我使用Spring Data JPA在MySQL中创建表,但创建失败

spring-data-jpa - JPA 入站 channel 适配器的示例 Spring 集成 DSL

java - JPA 在使用 selectcase 构造查询时处理空值

java - org.hibernate.ejb.criteria.path.Abs​​tractPathImpl.get 中的 NullPointerException

java - 将 CriteriaQuery JOIN 添加到 CriteriaQuery 后进行修改

java - Criteria API 中有类似 Restrictions.eq(true, false) 的东西吗?

java - Spring Data JPA - 编码 UTF-8 不起作用

sql - 比较 2 个列表的 Postgres SQL/HQL 查询结构