0

以下是我的代码片段:

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

有人可以帮忙吗???

4

3 回答 3

1

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

于 2013-01-16T07:45:21.670 回答
0

你为什么在里面使用 Native SQL 查询em.createQuery()?这将不起作用,因为 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>);

试试这个看看

于 2013-01-16T06:26:27.883 回答
0

如果您想执行 SQL,请使用createNativeQuery. 也尝试“选择成功。* ...

你也没有设置参数:parentuserid

采用query setParameter("parentuserid",someValue)

于 2013-01-16T06:26:59.667 回答