我正在使用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。我错过了什么吗?
答案 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上添加显式依赖。