JPA标准GROUP BY不添加SQL

时间:2017-02-20 11:56:32

标签: java jpa group-by criteria

我只是试图从具有JPA标准的SQL DB中获取一些实体,但是我的SQL输出中从不添加GROUP BY close

我做什么:

final EntityManager em = getEntityManager();

final CriteriaBuilder cb = em.getCriteriaBuilder();
final CriteriaQuery<T> criteriaQuery = cb.createQuery(sqlType);
final Root<T> root = criteriaQuery.from(sqlType);
criteriaQuery.select(root);

final String theaterId = "0E9390C6-57BB-4FE7-997B-2805C42A8EA7";
final String theaterId2 = "4D0462FC-8854-40CA-98F4-89E834A9FFA3";
criteriaQuery.where(root.get("contentLocations").get("theaterId").in(theaterId, theaterId2));
criteriaQuery.groupBy(root.get("id"));
criteriaQuery.having(cb.equal(cb.count(root.get("id")), 2));

final TypedQuery<T> q = em.createQuery(criteriaQuery);
final List<T> items = q.getResultList();

我得到了什么:

SELECT t1.ID, t1.CONTENTID, t1.CREATED, t1.SEARCHFIELD, t1.TYPE, t1.UPDATED FROM tmsContentLocations t0, tmsContents t1 WHERE ((t0.THEATERID IN (?, ?)) AND (t0.tms_content_fk = t1.ID))
bind => [3D877C4B-89B2-7BB4-3590-C0A5F930FC64, B07833DD-9239-6E34-3D70-7726A6995E6C]

如果我在SQL查询工具中尝试这个,它可以工作,如果我手工添加&#34; GROUP BY t1.id&#34;,它就像我期望的那样工作。

我在这里想念什么?

THX

编辑:在示例中添加了声明。 这里的重点是列出我的所有T,其中contentLocations包含我列表中的每个theaterId 在SQL中完美地工作

0 个答案:

没有答案