0

興味深い動作に遭遇しました。おそらく、基準 API がクエリのパラメーターを一重引用符で囲んでいます。

CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<SomeClass> criteriaQuery = criteriaBuilder.createQuery(SomeClass.class);
Metamodel metamodel = em.getMetamodel();
EntityType<SomeClass> entityType_ = metamodel.entity(SomeClass.class);
Root<SomeClass> root = criteriaQuery.from( SomeClass );
criteriaQuery.select(root.get(entityType_.getSingularAttribute( "someField" ));  
TypedQuery<SomeClass> q = em.createQuery(criteriaQuery);
List<SomeClass> result = (List<SomeClass>) q.getResultList();

このスニペットは、列のすべてのセルに「someField」でいっぱいの1つの列を持つリストになります。(SomeClass から 'someField' を選択; <--実際に動作します)

select は条件によってこの動作を受け入れますが、group by は失敗します。ORA-00979: GROUP BY 式ではありません。選択の場合のように、基準が同じ置換を行うことだけを考えます。

criteriaQuery.groupBy(root.get(entityType_.getSingularAttribute("someField") ));

クエリでこれらの単一のクォートを回避するにはどうすればよいですか?

よろしくお願いします。

4

0 に答える 0