Создать типизированный запрос через фабрику сеансов в JPA / Hibernate - PullRequest
1 голос
/ 11 октября 2011

Я обычно хочу сделать что-то вроде этого:

CriteriaBuilder qb = em.getCriteriaBuilder();
CriteriaQuery<Person> c = qb.createQuery(Person.class);

Но через фабрику сессий, а не менеджер сущностей.

Что-то вроде:

final TypedQuery<MyType> query = getSessionFactory().getCurrentSession().createTypedQuery(MyType.class, "query");

Это должно быть тривиально, но по какой-то причине я не смог найти информацию о том, как это сделать (если это вообще возможно, но я думаю, что так и должно быть).

Спасибо,

Ответы [ 2 ]

2 голосов
/ 11 октября 2011

Я не верю, что есть такой метод в Hibernate Session. Почему бы не использовать EntityManager? Это часть JPA и, следовательно, стандарт Java EE?

Если вы используете Spring (не мой личный выбор), вы можете использовать HibernateTemplate, который скрывает от вас приведение и предоставляет безопасные методы.

Актерский акт всегда будет где-то происходить!

2 голосов
/ 11 октября 2011

Это невозможно, потому что Session не имеет метода, который возвращает экземпляр javax.persistence.TypedQuery. Наличие org.hibernate.Query для реализации javax.persistence.TypedQuery было бы довольно неожиданным, потому что они разные звери (вид части разных API внутри Hibernate). Просто для того, чтобы быть в безопасности, я также проверил из источника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...