簡體   English   中英

當SQL字符串以字符串參數形式傳遞“ SYSDATE”時,Spring數據訪問異常

[英]Spring Data Access Exception when SQL string gets 'SYSDATE' passed as a String param

問題背景

我正在嘗試使用spring框架將記錄插入數據庫中。 作為此過程的一部分,我在DAO類中創建了一個SQL字符串(請參見下文),該字符串接受一些參數並將其插入到我聲明為字段的查詢字符串中。 如果前端用戶選擇了某些條件(已暫停/禁用),則數據庫中有兩個字段設置為當前日期。

問題是Spring不允許我將字符串SYSDATE作為參數注入到查詢中,它期望它是數字類型,因為數據庫中的列是DATE類型。

與其創建4個單獨的SQL字符串來容納用戶可能進行的四個選擇(而不是禁用/暫停,暫停,暫停,禁用,禁用和暫停),我不希望只使用一條語句將SYSDATE值插入到SQL字符串中。取決於傳遞給調用方法的值。

SQL STRING

  • 不起作用

     private int myMethod(...) { int created = 0; created = super.getJdbcTemplate().update(createNewObject, new Object[] {1, "t-1000", "good", "SYSDATE", "SYSDATE"}); return created;} 

(上面的方法實際上采用了JdbcTemplate的update方法中顯示的那些數據類型的變量,但只是為了讓您大致了解我要傳遞的參數)

    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

  • 作品

     private final static String createNewObject = "INSERT INTO my_table" + "(ID, \\"MODEL\\", STATUS, OVERRIDE, DISABLED) " + "VALUES " + "(?, ?, ?, SYSDATE, SYSDATE)"; 

期望的輸出

我想知道是否有一種方法可以使這種單查詢方法起作用,而不是針對用戶選擇的每個可能條件分別進行查詢。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM