【问题标题】:How do I fix "HV000030: No validator could be found for type: java.time.LocalDateTime" javax.validation如何修复“HV000030:找不到类型的验证器:java.time.LocalDateTime”javax.validation
【发布时间】:2016-06-03 15:05:54
【问题描述】:

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

在大多数情况下,练习是成功的;也就是说,它建立了!但是,我的一些测试失败了:

javax.validation.UnexpectedTypeException: HV000030: 没有验证器可以 可以找到类型:java.time.LocalDateTime。

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

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

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

【问题讨论】:

标签: hibernate java-8 java-time


【解决方案1】:

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

@NotNull

私有 LocalDateTime 日期时间;

到

//@NotNull -- 注释掉以演示删除。您实际上应该删除它。

私有 LocalDateTime 日期时间;

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

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

这使得它们比旧的 java.util.Date 更易于使用,因为您不必添加任何额外的注释。

不过,这里有一个严肃的教训;确保您的数据库与更新的模型兼容。对我来说,删除它就足够了,对于单元测试。但是当“上线”时,我需要以更谨慎的方式更新数据库,而不是破坏整个事情!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 2019-03-07
    • 2021-02-04
    • 2011-06-14
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    相关资源
    最近更新 更多