【发布时间】:2015-04-24 23:10:15
【问题描述】:
使用 Session 可以检索命名查询,如下所示:
Query query = session.getNamedQuery(queryName);
但是如何在不使用会话的情况下检索命名查询呢?
我正在动态修改查询字符串,此时不需要 Session。
定义的命名查询没有改变
【问题讨论】:
-
NamedQuery不能在运行时动态修改。
使用 Session 可以检索命名查询,如下所示:
Query query = session.getNamedQuery(queryName);
但是如何在不使用会话的情况下检索命名查询呢?
我正在动态修改查询字符串,此时不需要 Session。
定义的命名查询没有改变
【问题讨论】:
NamedQuery 不能在运行时动态修改。
SessionFactoryImplementor sesionFactoryImplementor=(SessionFactoryImplementor)sessionFactory;
sesionFactoryImplementor.getNamedQuery("test").getQueryString();
适用于 Hibernate 4。正如 Nayan Wadekar 所说,您不能在运行时修改它。
【讨论】:
Session.createSQLQuery(String)创建一个新查询
这对我很有效:
Query query = em.createNamedQuery(namedQuery);
String hql = query.unwrap(org.hibernate.Query.class).getQueryString();
希望这会有所帮助!
【讨论】: