Spring 尝试放置唯一约束时发生GenericJDBCException

Spring 尝试放置唯一约束时发生GenericJDBCException,spring,hibernate,Spring,Hibernate,我正在使用Spring和Hibernate(HSQLDB),一旦 @Column(unique = true) on a property 我明白了 无法执行语句;嵌套异常为org.hibernate.exception.genericjdbception:无法执行语句 如果有人需要,任何其他约束都可以正常工作。 我很困惑,因为这在我做上一个项目的时候并没有发生,互联网上也没有太多关于它的信息。也许很简单,但我看不出来 编辑:如您所见,在插入值时,它会遇到唯一的冲突并返回nullpointe

我正在使用Spring和Hibernate(HSQLDB),一旦

 @Column(unique = true) on a property
我明白了

无法执行语句;嵌套异常为org.hibernate.exception.genericjdbception:无法执行语句

如果有人需要,任何其他约束都可以正常工作。 我很困惑,因为这在我做上一个项目的时候并没有发生,互联网上也没有太多关于它的信息。也许很简单,但我看不出来


编辑:如您所见,在插入值时,它会遇到唯一的冲突并返回nullpointerexception。我遗漏了什么吗?

Spring boot 1.3.0依赖于HSQLDB 2.3.3。 HSQLDB有一个bug,当发生重复约束冲突时,该bug将抛出NullpointerException

错误文本如下:

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上添加一个明确的依赖项。

此答案的链接对我不起作用,但如果您使用最新版本(2.3.4),这也是固定的。谢谢@JamesR!