使用会话可以检索命名查询,如下所示:
Query query = session.getNamedQuery(queryName);
但是如何在不使用会话的情况下检索命名查询?
我正在动态修改查询字符串,此时不需要会话。
定义的命名查询未更改
答案 0 :(得分:0)
SessionFactoryImplementor sesionFactoryImplementor=(SessionFactoryImplementor)sessionFactory;
sesionFactoryImplementor.getNamedQuery("test").getQueryString();
适用于Hibernate 4.正如Nayan Wadekar所述,您无法在运行时对其进行修改。
答案 1 :(得分:0)
这对我很有用:
Query query = em.createNamedQuery(namedQuery);
String hql = query.unwrap(org.hibernate.Query.class).getQueryString();
希望这有帮助!