Невозможно выбрать столбец в Oracle View с помощью API критериев JPA 2 - PullRequest
1 голос
/ 16 августа 2010

У меня есть существующий рабочий запрос, который выбирает столбец из сущности, сопоставленной с Oracle View, используя следующий JPQL

    SELECT COUNT(o.id) FROM MyEntityView o

Я реорганизовал его для использования API критериев JPA 2 со следующим кодом:

    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)

Я попытался изменить отображение на таблицу вместо представления , и оно работает правильно.

Это ошибка в спящем режиме или я что-то упустил?

1 Ответ

1 голос
/ 16 августа 2010

Это звучит как ошибка (аналогично проблеме, о которой сообщалось в JPA 2 CriteriaQuery При использовании столбцов ID выдается Null Pointer EX ), и я не смог найти для нее существующую проблему Jiraи предложить создать новую.

При этом я не вижу смысла использовать CriteriaQuery здесь, особенно если вы не используете статическую метамодель для полной безопасности типов.Хотя, возможно, это упрощенный пример.

...