HSQL中的GenericJDBCException

时间:2011-09-23 09:14:42

标签: java hibernate hsqldb

我有一个名为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版本。

2 个答案:

答案 0 :(得分:1)

HSQLDB批处理错误已修复,现在可以正常工作了。问题是如果你有一个错误,例如你的SQL语句有问题等,你只会得到一个通常不会告诉你任何事情的异常。我喜欢做的是有一个帮助程序类,可以批处理模式和单独执行SQL查询,当我从批处理模式得到奇怪的错误时,我切换到单个查询。试试吧,也许这只是你SQL中的一个简单错误

答案 1 :(得分:1)

也可以disable batching in hibernate。在hibernate会话配置中,设置:

hibernate.jdbc.factory_class=org.hibernate.jdbc.NonBatchingBatcherFactory