Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用JPA 2标准API从Oracle视图中选择列_Java_Oracle_Hibernate_Jpa 2.0_Criteria Api - Fatal编程技术网

Java 无法使用JPA 2标准API从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();

我有一个现有的工作查询,它使用以下JPQL从映射到Oracle视图的实体中选择一列

    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)