我想表达以下疑问
select * from(
select pI, max(pAs) as pAs from mytable
and pAs>=?1 and pAs<=?2
and pI like 'DE%%'
and pE like ?6
group by pI
) as x
inner join mytable as a
on a.pI=x.pI
and a.pAs=x.pAs
使用hibernate中的criteriabuilder。我没有成功,目前使用的是nativeQuery。
然而,问题的症结(我无法解决)似乎是我需要在子选择中返回两个属性。我找到的所有示例只返回一个属性。
这真的是jpa/hibernate的限制还是有办法做我想做的?任何帮助/指针都很感激。
您没有提供有关您的实体的任何信息。所以我怀疑您有Mytable
实体类,它有Long
fieldpAs
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Mytable> query = builder.createQuery(Mytable.class);
Root<Mytable> root = query.from(Mytable.class);
Subquery<Long> subquery = query.subquery(Long.class); // max(pAs)
Root<Mytable> subRoot = subquery.from(Mytable.class);
Predicate predicate1 =
builder.equal(root.get("pI"), subRoot.get("pI"));
Predicate predicate2 =
builder.greaterThan(subRoot.get("pAs"), 0);
Predicate predicate3 =
builder.lessThan(subRoot.get("pAs"), 100);
//There is a simple example. But you can add as many predicates as you need
Predicate fullPredicate =
builder.and(predicate1, predicate2, predicate3);
Predicate havingPredicate =
builder.equal(root.get("pAs"), builder.max(subRoot.get("pAs")));
subquery.select(builder.max(subRoot.get("pAs"))).where(fullPredicate)
.groupBy(subRoot.get("pI")).having(havingPredicate);
query.select(root).where(builder.exists(subquery));
List<Mytable> result = entityManager.createQuery(query).getResultList();
我通过提示检查了它在EclipseLink中的工作情况: 这个链接http://blog.ringerc.id.au/2012/06/jpa2-is-very-inflexible-with-eagerlazy.html暗示通过Hibernate是不可能的,建议手动获取。但是,我无法理解如何通过HQL或标准来实现它,特别是如何获得不在实体上但仅存在于数据库上的child.parent_id列。即避
此查询用于检索一对多关系中的最后记录(请参阅SQL连接:选择一对多关系中的最后记录) 我的问题是:如何使用jpa criteria api使用subselect构建这个连接?可能吗?如果没有,可以使用jpql吗? 到目前为止我的代码:
因此,我希望从一个JPA查询返回多个对象,该查询还允许分页,这样我只能返回它返回的前10个对象。 JPA:返回多个实体的查询 在属性=值的表blah中作为select blah_0.id,blah_0.peropty进入,但随后转换为select*from(select blah_0.id,blah_0.peropty from表blah中属性=值),其中rownum>=10 也许创造一种新的方言
我正在使用JPA投影,但当我的查询包含子查询时,它就失败了。例如: 下面是投影的界面: 和存储库: 关于如何使用JPA投影的子查询有什么想法吗? 谢谢。
我们有一个实体树,由一个父实体组成,该父实体与一个子实体具有多对多关系,如下所述(在kotlin中)。为什么hibernate似乎忽略了与实体关系关联的FetchMode? 观察到的行为:在父级FetchMode的JpaRepository上执行findAll时。忽略SUBSELECT,Hibernate为每个父级触发一个新的选择来获取子级。 预期行为:在父节点的JpaRepository上执行f
问题内容: 我正在使用Spring JPA,我需要一个本机查询。通过该查询,我只需要从表中获取两个字段,因此我尝试使用Projections。它不起作用,这是我得到的错误: 我试图严格按照所链接页面的说明进行操作,试图使查询为非本地查询(如果我使用投影,我是否真的需要将查询设为本地查询,顺便说一句?),但我总是会遇到该错误。 如果使用接口,则可以,但是结果是代理,因此我真的需要它们成为“正常结果”