我该如何修复 "HV000030: No validator could be found for type: java.time.LocalDateTime" javax.validation

How do I fix "HV000030: No validator could be found for type: java.time.LocalDateTime" javax.validation

我最近将我们的项目从使用 Joda 时间更新为 Java 8 的 java.time。

在很大程度上,演练是成功的;也就是说,它建立了!但是,我的一些测试失败了:

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.time.LocalDateTime.

我正在使用 Hibernate 5.1、Hibernate-Validator 5.2.4、Hibernate-java8 5.1 版和 spring 4.2.0 版。

我看到其他建议说用@NotNull 替换@NotEmpty 注释。我已经这样做了,但仍然遇到上面同样的问题。

有什么建议吗?缺少依赖项(希望如此!)?

为了解决这个问题,我删除了模型中 LocalDateTime 对象上方的所有注释。例如:

@NotNull

private LocalDateTime dateTime;

//@NotNull --commented out to demonstrate the removal. You should actually delete this.

private LocalDateTime dateTime;

然后我删除了 Hibernate 在之前使用 Joda Time 重建时生成的表。

该解决方案的部分灵感来自: http://www.thoughts-on-java.org/hibernate-5-date-and-time/ 在作者指出的结论中:

This makes them even easier to use than the old java.util.Date because you don’t have to add any additional annotations.

虽然这里有严重的教训要吸取;确保您的数据库与更新后的模型兼容。对我来说删除它就足够了,用于单元测试。但是当 'going live' 数据库需要我以更谨慎的方式更新时,而不是破坏整个事情!