【发布时间】:2017-11-08 11:19:45
【问题描述】:
我正在尝试读取与类型匹配的 TYPE_ID。我正在使用休眠。
String readType = "SELECT TYPE_ID FROM TYPE_MASTER WHERE TYPE='OS' AND DESCRIPTION LIKE'%"+Type+"%'";
Query osResults = session.createSQLQuery(readType);
对于上面的代码,我收到如下错误,
WARN [org.hibernate.util.JDBCExceptionReporter] (DefaultQuartzScheduler_Worker-2) SQL Error: 933, SQLState: 42000
ERROR [org.hibernate.util.JDBCExceptionReporter] (DefaultQuartzScheduler_Worker-2) ORA-00933: SQL command not properly ended
[STDERR] (DefaultQuartzScheduler_Worker-2) org.hibernate.SessionException: Session is closed!
[STDERR] (DefaultQuartzScheduler_Worker-2) at org.hibernate.impl.AbstractSessionImpl.errorIfClosed(AbstractSessionImpl.java:72)
[STDERR] (DefaultQuartzScheduler_Worker-2) at org.hibernate.impl.SessionImpl.createSQLQuery(SessionImpl.java:1774)
[STDERR] (DefaultQuartzScheduler_Worker-2) at com.usm.job.UpdateNodeInfoTable.execute(UpdateNodeInfoTable.java:54)
[STDERR] (DefaultQuartzScheduler_Worker-2) at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
[STDERR] (DefaultQuartzScheduler_Worker-2) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
如果我添加“;”在 readOsType 的末尾如下,
String readType = "SELECT TYPE_ID FROM TYPE_MASTER WHERE TYPE='OS' AND DESCRIPTION LIKE'%"+Type+"%';";
然后我得到如下错误
WARN [org.hibernate.util.JDBCExceptionReporter] (DefaultQuartzScheduler_Worker-5) SQL Error: 911, SQLState: 42000
ERROR [org.hibernate.util.JDBCExceptionReporter] (DefaultQuartzScheduler_Worker-5) ORA-00911: invalid character
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) org.hibernate.exception.SQLGrammarException: could not execute query
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) at org.hibernate.loader.Loader.doList(Loader.java:2536)
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) at org.hibernate.loader.Loader.list(Loader.java:2271)
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:316)
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1842)
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:157)
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) at com.usm.job.UpdateNodeInfoTable.execute(UpdateNodeInfoTable.java:55)
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
ERROR [STDERR] (DefaultQuartzScheduler_Worker-5) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
【问题讨论】:
-
对于带有分号的查询 ERROR [org.hibernate.util.JDBCExceptionReporter] (DefaultQuartzScheduler_Worker-5) ORA-00911: 无效字符