Hibernate 不相交实体的查询规范
我不熟悉Spring数据。我知道我可以使用JPAHibernate 不相交实体的查询规范,hibernate,jpa,spring-data-jpa,spring-data,Hibernate,Jpa,Spring Data Jpa,Spring Data,我不熟悉Spring数据。我知道我可以使用JPA规范(其中T是我的实体)动态地构建where谓词lambda样式,JHipster有许多工具可以基于用户输入动态构建where谓词。我已经成功地将这些谓词集成到简单的根实体查询中(从[RootEntity]项中选择[something]) 现在我的问题是,我的查询必须跨越联接中的无关实体,因此必须跨越筛选器 如上所述,某些实体没有映射关系,并且必须没有映射关系 查询映射到DTO 查询必须是可分页的 有些过滤器是由代码固定和注入的 用户将为所有三个
规范
(其中T是我的实体)动态地构建where谓词lambda样式,JHipster有许多工具可以基于用户输入动态构建where谓词。我已经成功地将这些谓词集成到简单的根实体查询中(从[RootEntity]项中选择[something]
)
现在我的问题是,我的查询必须跨越联接中的无关实体,因此必须跨越筛选器
- 如上所述,某些实体没有映射关系,并且必须没有映射关系
- 查询映射到DTO
- 查询必须是可分页的
- 有些过滤器是由代码固定和注入的
- 用户将为所有三个实体的大多数属性提供过滤器输入
- 目前我还不清楚这个问题
select A.field as field, ... B.field as field, ... C.field as field
from FirstEntity A left outer join
SecondEntity B on (A.something = B.something) left outer join
ThirdEntity C on (C.something = ?.something)
where ????
我还没有尝试过任何东西,主要是因为签名的选择会影响其他一切
我一直在设计这个方法
我想问,当查询跨越不相关的实体时,如何正确使用规范。
我不知道Spring数据是否接受这样的内容
@Query("[my hql text as above, with aliases]")
Page<DTO> doTheQuery(Specification<FirstEntity> firstFilter, Specification<SecondEntity> secondFilter, Specification<ThirdEntity> thirdFilter, Pageable pageable);
@Query(“[my hql text如上,带别名]”)
查询页面(规格第一过滤器、规格第二过滤器、规格第三过滤器、可分页);
在上面的示例中,有三种不同的过滤器
或
@Query(“[my hql text如上,带别名]”)
PageDotheQuery(规格单过滤器,可分页);
在本例中,调用代码应该正确地使用来指示Hibernate谓词应用于不同的根实体(我已经使用别名A、B、C的实体).在这种情况下,您可以使用
标准Api
,或者使用规范获取实体
,然后按代码创建DTO
s有一张问题通知单,它标记为未解决
@Query("[my hql text as above, with aliases]")
Page<DTO> doTheQuery(Specification<?> singleFilter, Pageable pageable);