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”。(从 SomeClass 中选择 'someField'; <--really works )

选择按标准接受此行为,但是 group by 失败,说:ORA-00979:不是 GROUP BY 表达式。我只考虑标准做同样的替换,就像选择的情况一样。

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

如何在我的查询中避免那些单一的 qoutes?

任何建议表示赞赏,在此先感谢您。

4

0 回答 0