运行此查询时获取异常
select COUNT(tl.LOG_ID)AS EVTCOUNT,tl.PRIORITY FROM Customer_? tl Where tl.DEVICE_REPORTED_TIME >= SysDate-90 GROUP BY tl.PRIORITY ORDER BY tl.PRIORITY`
我在这里使用query.setLong(0,custId);
所以它会变得像Customer_1
如果我从SqlDeveloper IDE运行上述查询它工作正常或者如果我将此值设置为静态像Customer_1
而不是Customer_?
它工作正常。
错误:
警告:org.hibernate.util.JDBCExceptionReporter - SQL错误:933,SQLState:42000 错误:org.hibernate.util.JDBCExceptionReporter - ORA-00933:SQL命令未正确结束
虽然其他查询运行正常,但这个查询可能有什么问题?
修改
我使用的是NamedQueries,我已将此查询写入单独的xml文件中。
答案 0 :(得分:3)
您不能在这样的查询中使用参数。如果不进入这背后的逻辑,最好的选择是在创建查询之前连接查询字符串
String queryString = "select COUNT(tl.LOG_ID) AS EVTCOUNT,tl.PRIORITY FROM Customer_" + custId + " tl Where tl.DEVICE_REPORTED_TIME >= SysDate-90 GROUP BY tl.PRIORITY ORDER BY tl.PRIORITY";
Query query = session.createSQLQuery(queryString);
修改强>
对于NamedQueries,它们是在应用程序启动时编译的,所以我认为没有办法在运行时更改目标实体(表)。