我有一个名为ProdTransaction
的实体。我正在保存两个ProdTransaction
类型的记录。两个插件在独立运行时都会成功。我的意思是
tranDAO.save(record1) //alone works
tranDAO.save(record2) //alone works
但是将它们作为
一起运行tranDAO.save(record1)
tranDAO.save(record2)
HSQL引发GenericJDBCException
错误。
@Entity
@Table(name = "ProdTransaction")
public class ProdTransactionextends PersistentObject implements Serializable {
private static final long serialVersionUID = 1L;
@Embedded
private ProdTranPK id;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@Column(name = "REC_ID")
private Long recId;
@Temporal(TemporalType.DATE)
private Date date1;
@Column(length = 1)
private String comment;
}
我已经验证了数据,一切都很好。当我对HSQL运行时,我得到:
GenericJDBCException:无法执行JDBC批量更新。
但是,如果我连接到我的物理数据库,并以相同的顺序运行,它可以正常工作。 HSQL中可能存在什么问题?我使用的是1.8版本。
答案 0 :(得分:1)
HSQLDB批处理错误已修复,现在可以正常工作了。问题是如果你有一个错误,例如你的SQL语句有问题等,你只会得到一个通常不会告诉你任何事情的异常。我喜欢做的是有一个帮助程序类,可以批处理模式和单独执行SQL查询,当我从批处理模式得到奇怪的错误时,我切换到单个查询。试试吧,也许这只是你SQL中的一个简单错误
答案 1 :(得分:1)
也可以disable batching in hibernate。在hibernate会话配置中,设置:
hibernate.jdbc.factory_class=org.hibernate.jdbc.NonBatchingBatcherFactory