首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当SQL string作为字符串param传递'SYSDATE‘时,Spring数据访问异常

当SQL string作为字符串param传递'SYSDATE‘时,Spring数据访问异常
EN

Stack Overflow用户
提问于 2016-01-25 09:50:27
回答 1查看 285关注 0票数 0

问题背景

我试图使用spring框架将一条记录插入到数据库中。作为这个过程的一部分,我在DAO类中创建了一个SQL字符串(参见下面),它接受一些参数并将它们插入到我声明为字段的查询字符串中。如果前端用户(挂起/禁用)选择了某些条件,则数据库中有两个字段设置为当前日期。

问题是Spring不允许我将字符串SYSDATE作为参数注入到我的查询中,它希望它是一个数字类型,因为我的数据库中的列是DATE类型。

与其创建4个单独的SQL字符串来容纳用户做出的四种可能的选择(未禁用/挂起、挂起、禁用、禁用和挂起),我更希望只有一个语句将值SYSDATE插入到SQL字符串中,这取决于传递给调用方法的值。

SQL字符串

  • 不起作用 私有int myMethod(.){ int created = 0;created = super.getJdbcTemplate().update(createNewObject,新Object[] {1,"t-1000","good","SYSDATE","SYSDATE"});返回创建;}

(上面的方法实际上接受了在JdbcTemplate的update方法中显示的那些数据类型的变量,但只是为了让您对我传递的参数有一个粗略的了解)

代码语言:javascript
复制
    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

  • 作品 私有最终静态字符串createNewObject =“插入到my_table”+ "(ID,\“模型\”,状态,覆盖,禁用)“+”值"(?,SYSDATE,SYSDATE)";

期望输出

我想知道是否有一种方法可以使这种单一查询方法工作,而不是为用户选择的每一种可能的条件提供单独的查询。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-25 10:07:59

尝试new Object[] {1, "t-1000", "good", new Date(), new Date() };而不是new Object[] {1, "t-1000", "good", "SYSDATE", "SYSDATE"});

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34989489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档