执行查询时出现Hibernate异常

时间:2013-01-16 06:16:39

标签: java hibernate spring-mvc hql

以下是我的代码段:

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 '.'

有人可以帮忙???

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

为什么在em.createQuery()内使用Native 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>);

试试这个,看看

答案 2 :(得分:0)

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

此外,您不需要设置参数:parentuserid

使用query setParameter("parentuserid",someValue)