6

この単純なクエリ

session = com.jthink.songlayer.hibernate.HibernateUtil.getSession();
Query q = session.createQuery("recNo from SongChanges");

このスタックトレースを与える

java.lang.IllegalArgumentException: node to traverse cannot be null!
    at org.hibernate.hql.internal.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:63)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:272)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:180)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:119)
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:214)
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:192)
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1537)

私が行った場合

session = com.jthink.songlayer.hibernate.HibernateUtil.getSession();
Query q = session.createQuery("from SongChanges");

エラーは表示されませんが、recNo のみが必要です

何か案は ?

4

3 に答える 3

12

選択を忘れました:

Query q = session.createQuery("select sc.recNo from SongChanges sc");
于 2012-06-12T12:02:13.970 に答える
2

このエラーはcreateQuery、 の代わりに メソッドを使用して名前付きクエリを実行した場合にもよく発生しますgetNamedQuery。次に例を示します。

session.createQuery("InvoiceItem.itemsFromInvoice")

正しいアプローチがいつになるか

session.getNamedQuery("InvoiceItem.itemsFromInvoice")
于 2015-06-18T13:46:25.810 に答える