我有一个用 HQL 编写的复杂查询(使用多个联接和子查询),我在 Repository 类中使用了它。类似于下面的一个 -
@Repository
public interface DataRepository extends PagingAndSortingRepository<Data,String> {
public List<Data> findByService(@Param("service")Service service, Pageable page);
@Query("SELECT DISTINCT d from Data d "
+" WHERE (d.working in (SELECT d1 from Data d1 "
+" JOIN d1.working d1w "
+" JOIN d1.service s WITH (s in (:serviceList)))"
+" OR d.cleared IS NOT NULL) AND [..several other CRITERIA]")
public Page<Data> findForServices(@Param("serviceList")Set<Service> serviceList, Pageable page);
....
现在我需要动态地添加标准。这些标准的数量是灵活的,这使我无法将其纳入HQL
马上。无论如何有可能吗?
通过互联网筛选我找到了解决方案动态查询 https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/。但是,我想它们仅适用于我没有自定义查询的情况,即-否@Query
在查询中repository
.
还有另一个有趣的问题 https://stackoverflow.com/questions/30431035/spring-jpa-repository-dynamic-query我发现。但这也适用于只有一个表要查询的情况。
我不想切换到原始 SQL 查询。我该如何解决这个问题?
提到的具有规范和谓词的 Criteria API 有点难以适应,但它是处理动态条件的好方法。
我认为不可能将基于注释的查询与编程查询创建混合在一起。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)