2013-06-28 15 views
0

下面的代碼片段拋出異常:在嘗試運行查詢時獲取異常。這是爲什麼?

String hqlSelectDB = "use librarian"; 
sess.createQuery(hqlSelectDB).list(); 

異常

java.lang.IllegalArgumentException: node to traverse cannot be null! 
org.hibernate.hql.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:31) 
org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:254) 
org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157) 
org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111) 
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77) 
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56) 
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72) 
org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133) 
org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112) 
org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623) 
servlets.InsertPerson.doPost(InsertPerson.java:41) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 

爲什麼會出現這種異常?

回答

1

use librarian不是一個有效的查詢,它不返回任何結果。

嘗試一些有效的查詢爲from librarian.SomeTable t

如果您在Hibernate Configuration看看,你需要指定其DB您要使用,在配置階段本身。

這是hibernate配置屬性文件的示例,它將在休眠時使用SessionFactory(一種連接池),它將提供數據庫連接。

hibernate.connection.driver_class = org.postgresql.Driver 
hibernate.connection.url = jdbc:postgresql://localhost/mydatabase --> This is where you specify your DB name 
hibernate.connection.username = myuser 
hibernate.connection.password = secret 
hibernate.c3p0.min_size=5 
hibernate.c3p0.max_size=20 
hibernate.c3p0.timeout=1800 
hibernate.c3p0.max_statements=50 
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect 
+0

如何選擇數據庫? – saplingPro

0

應該

String hqlSelectDB = "from librarian";// where librarian is data object mapped with DB table 
sess.createQuery(hqlSelectDB).list(); 
0

查詢您要使用不是HQL查詢

From librarian 

將工作

相關問題