问题背景
我尝试使用spring框架将记录插入到我的数据库中。作为这个过程的一部分,我在我的DAO类中创建了一个SQL字符串(见下文),它接受一些参数并将它们插入到我声明为字段的查询字符串中。 如果前端用户选择了某些条件(暂停/禁用),我的数据库中有两个字段设置为当前日期。
问题是Spring不允许我将String SYSDATE
作为参数注入到我的查询中,它期望它是一个数字类型,因为我的数据库中的列是{{1输入。
我没有创建4个单独的SQL字符串来容纳用户做出的四种可能的选择(不是禁用/暂停,暂停,禁用,禁用和暂停),而是希望只有一个语句来插入值DATE
到SQL字符串中,具体取决于传递给调用方法的值。
SQL STRING
不起作用
SYSDATE
(上面的方法实际上接受了JdbcTemplate的update方法中显示的那些数据类型的变量,但只是为了让你大致了解我传递的参数)
private int myMethod(...) {
int created = 0;
created = super.getJdbcTemplate().update(createNewObject,
new Object[] {1, "t-1000", "good", "SYSDATE", "SYSDATE"});
return created;}
private final static String createNewObject = "INSERT INTO my_table"
+ "(ID, \"MODEL\", STATUS, OVERRIDE, DISABLED) "
+ "VALUES "
+ "(?, ?, ?, ?, ?)";
工作
Caused By: java.sql.SQLDataException: ORA-01858: a non-numeric character was found where a numeric was expected
渴望输出
我想知道是否可以使这种单一查询方法有效,而不是为用户选择的每种可能条件分别进行查询。
答案 0 :(得分:1)
尝试使用new Object[] {1, "t-1000", "good", new Date(), new Date() };
代替new Object[] {1, "t-1000", "good", "SYSDATE", "SYSDATE"});