CriteriaQuery с JPA 1.0 - PullRequest
       8

CriteriaQuery с JPA 1.0

3 голосов
/ 13 августа 2010

Возможно ли использовать CriteriaQuery с JPA 1.0.Я предполагаю, что JPA 2.0 не доступен с Java Se (версия - Java (TM) SE Runtime Environment (сборка 1.6.0_16-b01)).Я привязан к использованию,

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Test> cq = cb.createQuery(Test.class);
Root<Test> test= cq.from(Test.class);

....

Но не смог найти определение CriteriaBuilder в javax.persistence. *;(пробовал импортировать javax.persistence.criteria.CriteriaBuilder; также)

Если это невозможно, то какой вариант лучше у меня есть.Я использую hibernate в бэкэнде, но все же есть не проприетарный способ сделать это?если нет как сделать в спящем режиме?

спасибо.

Ответы [ 2 ]

6 голосов
/ 13 августа 2010

Возможно ли использовать CriteriaQuery с JPA 1.0.

Нет, JPA 1.0 не указывал API Criteria, API Criteria является частью нового компонента JPA 2.0.

Я предполагаю, что JPA 2.0 не доступен с Java SE

Ни JPA 1.0, ни JPA 2.0 не являются частью Java SE (в комплекте).Однако вы МОЖЕТЕ использовать JPA (1.0 или 2.0) в Java SE.

(...), но не можете найти определение CriteriaBuilder в javax.persistence. *

Как уже упоминалось, это не является частью API JPA 1.0, вы не найдете его, если не используете реализацию JPA 2.0.

Если это невозможно, что является лучшимвариант у меня есть.Я использую hibernate в бэкэнде, но все же есть не проприетарный способ сделать это?если нет, то как это сделать в hibernate?

Единственным вариантом в вашем случае будет использование проприетарного API Hibernate для Criteria Queries .Вам необходимо получить доступ к Session для этого:

org.hibernate.Session session = (Session) em.getDelegate(); 
Criteria crit = session.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();

Ссылки

0 голосов
/ 13 августа 2010

JPA2, безусловно, доступен для Java SE, но не поставляется с JDK по умолчанию.

Поскольку в спецификации JPA1 не указаны такие вещи, как метод getCriteriaBuilder() в EntityManager, вы вряд ли сможете легко их использовать без обновления до JPA2.

Файл hibernate-entitymanager.jar для Hibernate 3.5+ реализует API JPA2 для Hibernate и должен позволять вам использовать новые функции JPA с Java SE.

Для получения более подробной информации, я бы предложил справочные документы для Hibernate Core и Hibernate Entity Manager , особенно разделы в последнем, относящиеся к получению EntityManager в Java SE.

...