【问题标题】:hibernate - get named query string without sessionhibernate - 在没有会话的情况下获取命名查询字符串
【发布时间】:2015-04-24 23:10:15
【问题描述】:

使用 Session 可以检索命名查询,如下所示:

Query query = session.getNamedQuery(queryName);

但是如何在不使用会话的情况下检索命名查询呢?

我正在动态修改查询字符串,此时不需要 Session。

定义的命名查询没有改变

【问题讨论】:

  • NamedQuery 不能在运行时动态修改。

标签: java hibernate session


【解决方案1】:
SessionFactoryImplementor sesionFactoryImplementor=(SessionFactoryImplementor)sessionFactory;

sesionFactoryImplementor.getNamedQuery("test").getQueryString();

适用于 Hibernate 4。正如 Nayan Wadekar 所说,您不能在运行时修改它。

【讨论】:

  • 谢谢,但我可以从字符串Session.createSQLQuery(String)创建一个新查询
  • 您可以创建一个新的查询,但您还需要重置参数和其他查询详细信息。
【解决方案2】:

这对我很有效:

Query query = em.createNamedQuery(namedQuery);
String hql = query.unwrap(org.hibernate.Query.class).getQueryString();

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 2019-01-15
    • 1970-01-01
    相关资源
    最近更新 更多