gpt4 book ai didi

java - Hibernate异常查询未正确结束

转载 作者:行者123 更新时间:2023-12-01 22:26:24 26 4
gpt4 key购买 nike

运行此查询时出现异常

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_?它工作正常。

错误:

WARN : org.hibernate.util.JDBCExceptionReporter - SQL Error: 933, SQLState: 42000ERROR: org.hibernate.util.JDBCExceptionReporter - ORA-00933: SQL command not properly ended

尽管其他查询运行正常,但此查询可能有什么问题?

编辑

我正在使用 NamedQueries,并且我已在单独的 xml 文件中编写了此查询。

最佳答案

您不能在这样的查询中使用参数。在不深入了解其背后的逻辑的情况下,最好的选择是在创建查询之前连接查询字符串

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,它们是在应用程序启动时编译的,因此我认为没有办法在运行时更改目标实体(表)。

关于java - Hibernate异常查询未正确结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28695144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com