我遇到了一个有趣的行为:可能标准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';&lt; - 真的有用)
select通过条件接受此行为,但是group by failed表示:ORA-00979:不是GROUP BY表达式。 我只考虑标准做同样的替换,比如选择。
criteriaQuery.groupBy(root.get(entityType_.getSingularAttribute("someField") ));
如何在查询中避免使用这些单个qoutes?
任何建议表示赞赏,谢谢你。