Java 无法使用JPA 2标准API从Oracle视图中选择列
我有一个现有的工作查询,它使用以下JPQL从映射到Oracle视图的实体中选择一列Java 无法使用JPA 2标准API从Oracle视图中选择列,java,oracle,hibernate,jpa-2.0,criteria-api,Java,Oracle,Hibernate,Jpa 2.0,Criteria Api,我有一个现有的工作查询,它使用以下JPQL从映射到Oracle视图的实体中选择一列 SELECT COUNT(o.id) FROM MyEntityView o 我对其进行了重构,以使用JPA 2 Criteria API和以下代码: MyEntityView model = new MyEntityView(); CriteriaBuilder criteriaBuilder = model.entityManager().getCriteriaBuilder();
SELECT COUNT(o.id) FROM MyEntityView o
我对其进行了重构,以使用JPA 2 Criteria 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);
....
我尝试将映射更改为表而不是视图,并且它确实可以正常工作
这是一个Hibernate错误还是我遗漏了什么?这听起来像是一个错误(类似于中报告的问题),我找不到现有的Jira问题,并建议创建一个新的问题
尽管如此,我并不认为在这里使用CriteriaQuery
有什么意义,特别是如果不使用静态元模型来实现完整的类型安全性。这也许是一个简化的例子 这听起来像是一个bug(类似于中报告的问题),我找不到现有的Jira问题,建议创建一个新的问题
尽管如此,我并不认为在这里使用
CriteriaQuery
有什么意义,特别是如果不使用静态元模型来实现完整的类型安全性。这也许是一个简化的例子 谢谢,这是一个简单的例子。同时,我将求助于JPQL,谢谢,这是一个简化的示例。同时,我将求助于JPQL将列检索从字符串更改为元模型以防止混淆。将列检索从字符串更改为元模型以防止混淆。
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)