从Oracle视图中的列我有现有工作查询使用以下JPQL无法选择使用JPA 2标准API
SELECT COUNT(o.id) FROM MyEntityView o
我重构映射到Oracle视图的实体选择的列它使用JPA 2标准API与下面的代码:
MyEntityView model = new MyEntityView();
CriteriaBuilder criteriaBuilder = model.entityManager().getCriteriaBuilder();
CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(Long.class);
Root<MyEntityView > theView = criteriaQuery.from(MyEntityView.class);
criteriaQuery.select(criteriaBuilder.count(theView.get(MyEntityView_.id))); // ERROR!
TypedQuery<Long> query = model.entityManager().createQuery(criteriaQuery);
....
但它创造的select语句生成以下错误:
java.lang.NullPointerException
at org.hibernate.ejb.criteria.path.AbstractPathImpl.unknownAttribute(AbstractPathImpl.java:110)
at org.hibernate.ejb.criteria.path.AbstractPathImpl.locateAttribute(AbstractPathImpl.java:218)
at org.hibernate.ejb.criteria.path.AbstractPathImpl.get(AbstractPathImpl.java:189)
at com.mycomp.domain.view.MyEntityViewIntegrationTest.testMarkerMethod(MyEntityViewIntegrationTest.java:35)
我试图将映射更改为表而不是视图并且它确实工作正常。
这是一个Hibernate的Bug还是我错过了什么?
将字符串检索从字符串更改为MetaModel以防止混淆。 – Joopiter 2010-08-16 11:54:47