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

内部でネイティブ SQL クエリを使用しているのはなぜem.createQuery()ですか? HQL は持つことができずSELECT、さらに parameter の値を設定しないため、これは機能しません: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。「SELECT suc.* ...」も試してください。

また、パラメータ :parentuserid を設定しません

使用するquery setParameter("parentuserid",someValue)

于 2013-01-16T06:26:59.667 に答える