![](/img/trans.png)
[英]Deletions with Spring data/Hibernate: ORA-01407: Cannot update to Null
[英]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
值。
假設bar
是VARCHAR2
列類型,以下兩條語句是相同的,即它們將值設置為NULL
。
UPDATE foo SET bar = ''
UPDATE foo SET bar = NULL
您的代碼失敗,因為局部變量sources
是一個空字符串。
由於您從未聲明或初始化columnName
,因此甚至不清楚該代碼是如何編譯的,我們也無法告訴您為什么sources
仍然是一個空字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.