【问题标题】:HQL Query fails in Hibernate MySQLHQL 查询在 Hibernate MySQL 中失败
【发布时间】:2013-12-02 07:42:41
【问题描述】:

我想恢复 user 表中的所有行。

String queryS = "select u from user u";
        System.out.println("entityManager: "+(entityManager == null));
        Query query = entityManager.createQuery(queryS);
//staff

引发异常的行是Query query = entityManager.createQuery(queryS);

我不知道为什么连持久化文件都可以而且表存在

堆栈是:

10:36:06.693 [AWT-EventQueue-0] DEBUG org.hibernate.hql.ast.ErrorCounter - throwQueryException() : no errors
10:36:06.693 [AWT-EventQueue-0] DEBUG o.h.hql.antlr.HqlSqlBaseWalker - select << begin [level=1, statement=select]

【问题讨论】:

  • 尝试“select u from User u”或缩短查询“from User”

标签: mysql hibernate hql


【解决方案1】:

您必须将表的名称放在query 中,就像在persistence 文件中而不是在数据库中一样。

【讨论】:

    【解决方案2】:

    如果这样:

    String queryS = "select u from user u"
    

    在表名上引用你不能使用 createQuery 方法但 createNativeQuery

    如果你想使用 createQuery,你必须在查询中使用实体/类映射你的用户表

    总结:

    案例 1(使用 createNativeQuery)

    String queryS = "select u from user u";
    Query query = entityManager.createNativeQuery(queryS);
    

    案例 2(使用 createQuery)

    String queryS = "select u from " + User.class.getName() + " u";
    Query query = entityManager.createNativeQuery(queryS);
    

    【讨论】:

      猜你喜欢
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 2011-05-18
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多