Java JPA限制子查询结果(Jhipster)
我需要把Java JPA限制子查询结果(Jhipster),java,jpa,jhipster,Java,Jpa,Jhipster,我需要把 order by tabB.id desc limit 1 在子查询中,因为子查询必须返回单个值 Long filter= Long.parseLong(value); return (root, query, builder) -> { Subquery<B> subquery = query.subquery(B.class); Root<B> subqueryRoot
order by tabB.id desc
limit 1
在子查询中,因为子查询必须返回单个值
Long filter= Long.parseLong(value);
return (root, query, builder) -> {
Subquery<B> subquery = query.subquery(B.class);
Root<B> subqueryRoot = subquery.from(B.class);
Join<B,C> ss = subqueryRoot.join(B_.idC);
subquery.correlate(ss);
subquery.select(subqueryRoot.get(B_.ID_C));
subquery.where(
builder.equal(subqueryRoot.get(B_.idA),root.get(A_.id))
);
subquery.
builder.max(subqueryRoot.get(B_.id)); //first try
builder.desc(subqueryRoot.get(B_.id)); //another try
return builder.equal(subquery, filter);
};
是否有方法获取子查询中的第一个元素以便应用于where查询
我的情况与此相似
但我有一个不超过id的等式:
SELECT q.id_project FROM status q
WHERE q.status_name like 'new'
AND q.id IN (
SELECT TOP 1 sq.id from status sq
WHERE q.id_project = sq.id_project
ORDER BY sq.id DESC )
我的情况是:
SELECT A.id_project FROM tabA A
WHERE A.col like 'alpha'
AND 'centauri' = (
SELECT TOP 1 B.colAA from tabB B
WHERE A.id_project = B.id_project
ORDER BY B.id DESC )
子查询,可能是
select(Integer size)
或limit(Integer size)
。子查询没有这两种方法。一种选择是使用子查询的子查询,但它并不漂亮。还有别的办法吗?
SELECT A.id_project FROM tabA A
WHERE A.col like 'alpha'
AND 'centauri' = (
SELECT TOP 1 B.colAA from tabB B
WHERE A.id_project = B.id_project
ORDER BY B.id DESC )