【问题标题】:Hibernate Exception while executing query执行查询时出现休眠异常
【发布时间】:2013-01-16 06:16:39
【问题描述】:

以下是我的代码sn-p:

ApplicationContext ctx = new ClassPathXmlApplicationContext(
                    "classpath*:META-INF/spring/applicationContext*.xml");
            JpaTransactionManager jpatm = (JpaTransactionManager) ctx
                    .getBean("transactionManager");
            EntityManager em = jpatm.getEntityManagerFactory()
                    .createEntityManager();
String sqlQuery = "SELECT suc FROM SubUsrCont suc, UDMap uDMap WHERE suc.userid = uDMap.userid AND uDMap.parentuserid = :parentuserid";
TypedQuery<SubUsrCont> query = (TypedQuery<SubUsrCont>) em.createQuery(sqlQuery, SubUsrCont.class);
query.setParameter("parentuserid", parentid);
ArrayList<SubUsrCont> listContent = (ArrayList<SubUsrCont>) query.getResultList();

但是当我执行时出现以下错误:

[http-8080-1] ERROR org.hibernate.hql.PARSER - line 1:92: expecting OPEN, found '.'

谁能帮忙???

【问题讨论】:

    标签: java hibernate spring-mvc hql


    【解决方案1】:

    嗯,我找到了它并成功地测试了它。这是由于我的 POJO 包名称。以前是 in.myproject.myname。我将其更改为 com.myproject.myname。 HQL 将 in 作为 SQL 关键字 IN 并正在寻找 OPEN '('.

    【讨论】:

      【解决方案2】:

      为什么在em.createQuery() 中使用原生 SQL 查询?这不起作用,因为 HQL 不能有 SELECT,而且您没有设置参数 :parentuserid 的值。

      String sqlQuery = "FROM SubUsrCont suc, UDMap uDMap WHERE suc.userid = uDMap.userid AND uDMap.parentuserid = :parentuserid";
      TypedQuery<SubUsrCont> query = (TypedQuery<SubUsrCont>) em.createQuery(sqlQuery, SubUsrCont.class);
      query.setParameter("parentuserid", <PARENT USER ID TO BE SEARCHED>);
      

      试试这个看看

      【讨论】:

      • @shazin... 它不起作用.... org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.ast.QuerySyntaxException...
      【解决方案3】:

      如果您想执行 SQL,请使用 createNativeQuery。也可以试试“SELECT suc.* ...

      你也没有设置参数 :parentuserid

      使用query setParameter("parentuserid",someValue)

      【讨论】:

      • @StanislavL...好吧,它不起作用。但我知道问题出在哪里。我使用 Spring Roo 来生成项目。所以在 SubUsrCont POJO 的情况下,DB 中的实际表名是 sub_usr_cont。现在,当我使用 createNativeQuery 时,它只是将 SubUsrCont 转换为 subusrcont。数据库中实际上不存在。我收到以下错误:错误 org.hibernate.util.JDBCExceptionReporter - 表 'mydb.subusrcont' 不存在
      猜你喜欢
      • 2013-07-24
      • 1970-01-01
      • 2014-03-09
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多