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会话来确定它吗?它是否将上次尝试保存的实体的信息存储在某个位置