gpt4 book ai didi

java - hibernate SQLIntegrityConstraintViolationException

转载 作者:太空宇宙 更新时间:2023-11-04 07:36:58 25 4
gpt4 key购买 nike

我有一个 oracle 表,对几个字段有独特的约束。我正在编写一段代码来将数据从大型 Excel 文件(通常为数千行)导入到该表中。整个进口必须在一笔交易中进行。

在这数千行中可能会出现一两行重复。因此,我需要忽略 SQLIntegrityConstraintViolationException 并继续插入所有其他行。我只需要向用户显示 rowNo 123 是重复条目的消息。

我正在逐行读取 Excel 文件(基于 Apache POI 事件),每一行都映射到 hibernate POJO 并立即保存:

public void saveRow( ExcelRow row) {
TableRow tableRow = new TableRow(row);
//some logic goes here
this.session.save(tableRow);
}

我尝试用

包围 session.save
try{
session.save(tableRow);
}catch(SQLIntegrityConstraintViolationException e)
{
//push the error message and continue
}

但是 Netbeans 提示 SQLIntegrityConstraintViolationException 异常永远不会在相应的 try 语句主体中抛出

如何捕获并忽略完整性异常以继续处理数据?

我宁愿不必执行另一个 10K 选择来检查是否存在类似的行。

最佳答案

Hibernate 将 SQL 异常包装在它自己的异常堆栈中,通常是一个 org.hibernate.HibernateException,它是一个 RuntimeException。您可以捕获它,或者如果您知道这将违反约束,请 try catch ConstraintViolationException .

关于java - hibernate SQLIntegrityConstraintViolationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com