我试图利用Querydsl从表中获取一些结果。到目前为止,这是我尝试过的--
SELECT T1.*
FROM T1,T2,T3,T4,T5
WHERE T1.A=T2.A
AND T2.B=T5.B
AND T4.C=T2.C
AND T1.B=1234;
booleanBuilder.and(JPAExpressions.select(qT1).from(qT1,qT2,qT3,qT4,qT5)
.where(
qT1.a.eq(qT2.a)
.and(qT1.a.eq(qT2.a))
... // and so on
.exists());
JPQLQuery jpqlQuery = new JPAQuery(entityManager);
jpqlQuery.select(qT1).from(qT1, qT2, qT3, qT4, qT5).where(booleanBuilder);
return jpqlQuery.fetch();
如何在上面的JPAQuery
中合并limit
以便只获取第一个结果?
复杂性不在谓词或QueryDSL中,而是在必须为结果中的每一行执行的子查询中执行它。根据结果集的总大小,这可能会变得越来越难以计算。然而,在QueryDSL、Hibernates HQL、JPA的JPQL或数据库SQL中,它同样复杂。所以您试图生成的SQL也同样慢。
您可能会成功地使用limit子句优化查询。在QueryDSL中为查询添加一个limit子句是相当简单的:.limit(1)
。因此您的查询变为:
JPQLQuery jpqlQuery = new JPAQuery(entityManager);
jpqlQuery.select(qT1).from(qT1, qT2, qT3, qT4, qT5).where(booleanBuilder);
jpqlQuery.limit(1);
return jpqlQuery.fetch();
基本上,我有一个规范,以便过滤一个查询。在它的内部,需要添加一个新的谓词。 想象一个带有jsonb列(bar)的表(Z)。该列具有以下结构: 通过这样做: 有什么建议吗?
> 帐户表:accountId(PK)电子邮件密码 account_profile表:accountId(PK)(fk到account)昵称 团体表:articleId(PK)accountId(fk to account)标题内容 现在我想要下面的JPQL是查询DSL代码 我有实体元模型-QAccount、QAccountProfile、QCommunity 此外,我必须通过分页获得结果,因此应
我对kotlin中的收藏感到困惑。 结构有点复杂。 现在我想得到一张地图,<code>地图 我被困在这里
我需要@query的原因是应用基于身份验证主体的安全性。 存储库的完整代码:
关系,而是 这是我的SQL查询 (摘自我这里的示例:https://www.db-fiddle.com/f/r5uvesivyahrp6kspwjxba/1) 我所尝试的所有操作都给出了一些例外情况,如 假设,如果是一对一的,我可以像这样锁链... 但我没有那种关系。
基础回购 和存储库类 现在我想使用带有谓词查询的Repo。我需要形成一个谓词,在这个谓词中,我可以根据给定的Bs加载