尝试放置唯一约束

时间:2015-12-08 00:18:19

标签: spring hibernate

我正在使用Spring和Hibernate(HSQLDB),并且只要我放

 @Column(unique = true) on a property

我得到了

could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement

如果有人需要,每个其他约束都可以正常工作here's the github。 我很困惑,因为当我在做我之前的项目时并没有发生这种情况,而且互联网上的信息并不多。也许这很简单,但我看不到它。

编辑:additional log如您所见,正在插入值,然后遇到唯一违规并返回nullpointerexception。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

Spring boot 1.3.0依赖于HSQLDB 2.3.3。 HSQLDB有一个错误,当发生重复约束违规时会抛出NullpointerException。

https://sourceforge.net/p/hsqldb/bugs/1406/ 错误文本如下:

A null pointer exception is thrown in IndexAVLMemory when a unique constraint is violated:
Caused by: java.lang.NullPointerException
at org.hsqldb.index.IndexAVLMemory.insert(IndexAVLMemory.java:236)
at org.hsqldb.persist.RowStoreAVL.indexRow(RowStoreAVL.java:231)
... 44 more
The old and correct behavior was to get a SQLIntegrityConstraintViolationException in such a case.

我建议您排除HSQL DB 2.3.3并在2.3.2上添加显式依赖。