通过JPA / Hibernate中的会话工厂创建类型化查询

时间:2011-10-11 09:25:32

标签: java hibernate jpa

我通常想做这样的事情:

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

但是通过会话工厂而不是实体经理。

类似的东西:

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

这应该是微不足道的,但由于某种原因,我无法找到有关如何做到的信息(如果可能的话,但我认为应该是这样)。

谢谢,

2 个答案:

答案 0 :(得分:2)

这是不可能的,因为Session没有任何返回javax.persistence.TypedQuery实例的方法。使用org.hibernate.Query来实现javax.persistence.TypedQuery会非常令人惊讶,因为它们是不同的野兽(Hibernate中不同API的一部分)。为了安全起见,我也从源头检查过。

答案 1 :(得分:2)

我不相信Hibernate Session上有这样的方法。为什么不使用EntityManager?它是JPA的一部分,因此是Java EE标准?

如果你使用Spring(不是我个人的选择),你可以使用HibernateTemplate隐藏你的演员,并提供类型安全的方法。

演员阵容总会发生在某个地方!