Java Hibernate批处理更新:需要知道失败的语句
我有这样一个代码:Java Hibernate批处理更新:需要知道失败的语句,java,sql,hibernate,batch-processing,Java,Sql,Hibernate,Batch Processing,我有这样一个代码: Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); try { for ( Customer customer: customers ) { i++; session.update(customer); if ( i % 200 == 0 ) { //200, same as the JDBC batch size
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
try {
for ( Customer customer: customers ) {
i++;
session.update(customer);
if ( i % 200 == 0 ) { //200, same as the JDBC batch size
//flush a batch of inserts and release memory:
session.flush();
session.clear();
}
}
} catch (Exc e) {
//TODO want to know customer id here!
}
tx.commit();
session.close();
比如说,session.flush()在某个时候引发了一个DataException,因为其中一个字段没有映射到数据库列大小,这是这批200个客户中的一个。没什么问题,数据可能会被破坏,在这种情况下没关系。但是,我真的需要知道失败的客户id。数据库返回无意义的错误消息,没有说明语句的参数等。捕获的异常也不包含失败的客户,只包含sql语句文本,看起来像“update customer set name=?”
我可以用hibernate会话来确定它吗?它是否将上次尝试保存的实体的信息存储在某个位置