我有一个在几个字段上具有独特约束的 oracle 表。我正在编写一段代码以将数据从大型 excel 文件(通常为数千行)导入该表。整个导入必须在一个事务中进行。
可能会发生在数千行中会有一两行重复。所以我需要忽略 SQLIntegrityConstraintViolationException 并继续插入所有其他行。我只需要向用户显示第 123 行是重复条目的消息。
我正在逐行读取excel文件(基于Apache POI事件),每一行都映射到休眠POJO并立即保存:
public void saveRow( ExcelRow row) {
TableRow tableRow = new TableRow(row);
//some logic goes here
this.session.save(tableRow);
}
我试图用 session.save 包围 session.save
try{
session.save(tableRow);
}catch(SQLIntegrityConstraintViolationException e)
{
//push the error message and continue
}
但是 Netbeans 哭了exception SQLIntegrityConstraintViolationException is never thrown in body of corresponding try statement
。
如何捕获并忽略完整性异常以继续处理数据?
我宁愿不必再执行 10K 选择来检查是否存在类似的行。