簡體   English   中英

java.sql.SQLException: ORA-01407: 無法更新到 NULL 中的 ZD523817880E15EA2238

[英]java.sql.SQLException: ORA-01407: cannot update to NULL in Java

I have below code in Java where my Update statement is getting failed and i am getting an error java.sql.SQLException: ORA-01407: cannot update ("ORDER_ID_TEST"."SOURCES") to NULL . 我真的不明白為什么SOURCES字段沒有被映射。 我只提到了代碼的一些重要部分。 orderid 和其他字段正在更新語句中映射。

SOURCES字段是表中非 null 數據類型的字符串。 我正在嘗試檢查文件中的表中是否存在 ORDERID 和 EXTORDID 的組合,然后進行更新或插入。

而不是 if (.latestModDate.isEmpty()) if i give ((latestModDate.= null)) 進程運行但它也插入值並且不檢查更新語句。

@Service

公共 class OImporter { 私有最終 static 記錄器日志 = LoggerFactory.getLogger(OImporter.class);

// Tabellenname auf Spalten in der Tabelle
Map<String, List<ColumnData>> columnDataCache = new HashMap<>();

private final JdbcTemplate jdbcTemplate;

public OImporter(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
}

public void importFile(BufferedReader bufferedReader, String tableName, String fileName,
                       Map<Integer, Function<String, String>> COLUMN_TYPE_MAPPINGS,
                       Map<String, Function<String, String>> COLUMN_NAME_MAPPINGS) throws IOException {
    try {
        importFile(bufferedReader, tableName, fileName, COLUMN_TYPE_MAPPINGS, COLUMN_NAME_MAPPINGS,
                new ArrayList<>());
    } catch (IllegalStateException e) {
        log.warn(e.getLocalizedMessage());
    }
}

在 Oracle 數據庫中,空字符串成為NULL值。

假設barVARCHAR2列類型,以下兩條語句是相同的,即它們將值設置為NULL

UPDATE foo SET bar = ''

UPDATE foo SET bar = NULL

您的代碼失敗,因為局部變量sources是一個空字符串。

由於您從未聲明或初始化columnName ,因此甚至不清楚該代碼是如何編譯的,我們也無法告訴您為什么sources仍然是一個空字符串。

暫無
暫無

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

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