使用 Session 可以检索命名查询,如下所示:
Query query = session.getNamedQuery(queryName);
但是如何在不使用会话的情况下检索命名查询呢?
我正在动态修改查询字符串,此时不需要会话。
定义的命名查询没有改变
SessionFactoryImplementor sesionFactoryImplementor=(SessionFactoryImplementor)sessionFactory;
sesionFactoryImplementor.getNamedQuery("test").getQueryString();
与 Hibernate 4 一起使用。正如 Nayan Wadekar 所说,您不能在运行时对其进行修改。
这对我很有效:
Query query = em.createNamedQuery(namedQuery);
String hql = query.unwrap(org.hibernate.Query.class).getQueryString();
希望这可以帮助!