问题描述
通过 Ormlite 运行会话格式化查询的正确方法是什么?我设置会话格式的原因是我运行的查询从未检索到任何结果,并且我不断收到一个荒谬的错误(您可以在下面看到)。
这是我目前正在做的设置会话格式:
String sqlSession = "alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';";
Conn.My_Dao().queryRaw(sqlSession);
但我不断收到以下错误:
java.sql.sqlException: Could not perform raw query for
alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
我这样做的原因(正如我之前提到的) - 对于我运行的任何查询,我都会收到以下错误:
java.sql.sqlException: Problems parsing default date string '2021-01-01 00:00:00'
using 'yyyy-MM-dd HH:mm:ss.SSSSSS'
我过去曾经历过与 Oracle sql 类似的事情(准确地说是一个旧的 PHP 项目),我只是通过将会话格式设置为上述格式来处理它。
但是,我同意这可能不是解决此问题的最优雅的方法。处理它的最佳方法是什么?
解决方法
java.sql.SQLException: 无法对更改会话集 nls_date_format = 'DD-MON-YYYY HH24:MI:SS' 执行原始查询;
将来,当您收到异常时,请确保发布更多异常。我怀疑稍后在异常中有一个“Caused by”行,说明这不是一个查询。
我猜您应该使用 Dao.executeRaw(...)
method 而不是 Dao.queryRaw(...)
。查询确实需要是返回结果的 select
语句。