Hibernate @NotEmpty注释等效于Javax.package或替代

时间:2013-07-05 05:43:32

标签: java validation annotations bean-validation notnull

有没有办法在不编写自定义验证的情况下实现@NotEmpty hibernate验证? javax.validation包不包含此批注。只有1个}}。但它不验证非空值但为空值。所以我希望看到@NotNull的替代方案。

使用@NotEmpty?怎么样?

4 个答案:

答案 0 :(得分:86)

NotEmpty只是@NotNull@Size(min=1)的组合。

答案 1 :(得分:7)

请注意@NotEmpty将返回有效的List<>包含null元素。

在@QueryParam List<>

的情况下有点怪异

正如Affe所说,我做了一个自定义注释,本身用@NotNull和@Size(min = 1)注释了一个自定义验证器,它迭代集合并仅在元素不为空时才定位布尔标志。

答案 2 :(得分:1)

更新

我在这个答案的成绩中得到了-2分。

所以我更新了它。

在Hibernate 6之后的Hibernate @NotEmpty源代码中,它告诉我们使用标准的{@link javax.validation.constraints.NotEmpty}约束:

javax.validation.constraints.NotEmpty

见:

https://github.com/hibernate/hibernate-validator/blob/6.0/engine/src/main/java/org/hibernate/validator/constraints/NotEmpty.java

旧答案:

Bean验证2.0(JSR 380)之后,有一个新的注释@NotEmpty:

SELECT [Accruals Raw Data].Company, [Accruals Raw Data].[Business Unit], [Accruals Raw Data].[Accrual ID], [Accruals Raw Data].[Accrual Sub Category], [Accruals Raw Data].[Posted Date], [Accruals Raw Data].[Amount $], [Accruals Raw Data].[User Name]
FROM [Accruals Raw Data]
WHERE ((([Accruals Raw Data].Company)=[Forms]![Filtered Accrual Reporting]![Company])) AND (([Accruals Raw Data].[Business Unit])=[Forms]![Filtered Accrual Reporting]![Business Unit]) AND (([Accruals Raw Data].[Accrual ID])=[Forms]![Filtered Accrual Reporting]![Accrual ID]) AND (([Accruals Raw Data].[Accrual Sub Category])=[Forms]![Filtered Accrual Reporting]![Accrual Sub Category]) AND (([Accruals Raw Data].[User Name])=[Forms]![Filtered Accrual Reporting]![User Name]));

请参阅:

http://beanvalidation.org/2.0/spec/#builtinconstraints-notempty

https://github.com/beanvalidation/beanvalidation-api/blob/master/src/main/java/javax/validation/constraints/NotEmpty.java

答案 3 :(得分:0)

对于Hibernate,在较新的版本中已弃用。
使用较新版本的Javax验证,它具有@Empty

使用

import javax.validation.constraints.NotEmpty;

@NotEmpty
private List<Record> records;