如何在JPA Criteria查询API中编写自定义查询作为根?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JPA Criteria查询API中编写自定义查询作为根?相关的知识,希望对你有一定的参考价值。
我的查询是:
select * from tbl1 t1,
(select max(modified_datetime),id as ID ,status from
tbl2 group by modified_datetime,ID,status) t2
where
t1.ID=t2.ID;
我该如何实现?
请帮助!
答案
没有提供代码,我假设您已完成所有配置。以下是为您提供的解决方案。
@Query(nativeQuery = true, value = "select * from tbl1 t1,(select max(modified_datetime),id as ID ,status from tbl2 group by modified_datetime,ID,status) t2 where t1.ID=t2.ID;")
ReturnType methodName(@Param("paramsHereIfAny") String paramsHereIfAny);
评论后编辑
//some parameters to your method
String param1 = "1";
String paramNull = null;
CriteriaBuilder qb = em.getCriteriaBuilder();
CriteriaQuery cq = qb.createQuery();
Root<A> customer = cq.from(A.class);
//Constructing list of parameters
List<Predicate> predicates = new ArrayList<Predicate>();
//Adding predicates in case of parameter not being null
if (param1 != null)
predicates.add(
qb.equal(customer.get("someAttribute"), param1));
if (paramNull != null)
predicates.add(
qb.equal(customer.get("someOtherAttribute"), paramNull));
//query itself
cq.select(customer)
.where(predicates.toArray(new Predicate[]));
//execute query and do something with result
em.createQuery(cq).getResultList();
以上是关于如何在JPA Criteria查询API中编写自定义查询作为根?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JPA Criteria API 连接不相关的实体
JPA Criteria API where subclass - 出现错误:无法针对路径 [null] 解析属性 [lastName]
在 JPA Criteria API 的子查询中使用 ORDER BY 的替代方法是啥?