休眠 @NotEmpty 已弃用

Posted

技术标签:

【中文标题】休眠 @NotEmpty 已弃用【英文标题】:Hibernate @NotEmpty is deprecated 【发布时间】:2018-08-05 18:24:32 【问题描述】:

我正在使用5.2.13.Final 版本的hibernate-core 和 5.2.13.hibernate-validator的最终版本。

@NotEmpty
@Column(name = "SSO_ID", unique = true, nullable = false)
private String ssoId;

ssoId 为空时,当我需要来自message.properties 文件的以下验证消息时,@NotEmpty 出现在图片中:

NotEmpty.user.ssoId=SSO ID can not be blank.

@NotEmpty 在最新版本中已弃用。它的等价物是什么?

【问题讨论】:

尝试改用javax.validation.constraints.NotEmpty(参见github.com/hibernate/hibernate-validator/blob/master/engine/src/…)。 【参考方案1】:

一般来说,由于某些东西在 javadoc 中被标记为已弃用,javadoc 也会解释什么是替代方案。

org.hibernate.validator.constraints.NotEmpty annotation javadoc 状态(重点是我的):

已弃用。改用标准 javax.validation.constraints.NotEmpty 约束

请注意,自 Hibernate 5 以来,Hibernate 弃用了其几个特定的​​验证约束类,转而使用标准的 JSR 380-bean validation 类。 另请注意,Hibernate Validator 6 库实际上是 the reference implementation of this JSR。

Here 是针对 Hibernate 验证器的已弃用 API 的更新列表。

【讨论】:

这意味着我们必须同时使用两种注解,Hibernate 和 javaannotations? 不是“必须”,但如果您使用在 JSR 中没有对应项的特定 Hibernate 验证注释,则可以。如果您使用 Hibernate Validator 6,它应该不是问题,因为它是 JSR 的默认实现。因此,您将只有 javax.validation 注释。【参考方案2】:

使用 导入 javax.validation.constraints.NotBlank; 代替 导入 org.hibernate.validator.constraints.NotBlank;

【讨论】:

您能否详细说明一个可行的答案? “NotBlank”去哪儿了?它也是一个属性(@NotBlank)吗?

以上是关于休眠 @NotEmpty 已弃用的主要内容,如果未能解决你的问题,请参考以下文章

@NotNull@NotEmpty@NotBlank的区别

@NotEmpty@NotNull@NotBlank 的区别

@notnull @notempty @notblank区别

易优CMS:小白学代码之notempty

@NotEmpty@NotNull 和 @NotBlank 的区别

@NotNull,@NotBlank和 @NotEmpty使用