Spring Hibernate Bean 验证@valid

Spring Hibernate Bean Validation @valid

我知道这不是这个论坛的新问题,但我很困惑我该怎么办。

问题:我正在使用 spring mvc + hibernate 开发一个应用程序。对于服务器端验证,我在控制器中使用@valid 注释,在我的bean 中使用@null 和@notNull 注释。

例如

public class User implements Serializable {

    private static final long serialVersionUID = 2158419746939747203L;

    @Id
    @Column(name="USER_ID")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long userId;

    @Column(name="USERNAME", unique = true)
    @NotEmpty @NotNull @Size(min=6, max=20)
    private String username;

    @Column(name="PASSWORD")
    @NotEmpty @NotNull @Size(min=6, max=20)
    private String password;

此验证进行得很好,数据也保存在数据库中。

但我想在没有任何验证器的情况下使用注释来验证唯一约束、参照完整性和其他约束 class。

可能吗?如果不是,那么最好和最简单的方法是什么(更少的编码)?如果框架能为我做这件事,我将不胜感激。

索拉布,

对于 table、

中的唯一约束
 @Id

您也可以通过休眠注释来强制执行参照完整性 例如。

@OneToOne(mappedBy = "foo")

这是一个例子post

Referential integrity with One to One using hibernate

这里有一个非常详细的教程,也探讨了同样的问题:

http://www.journaldev.com/2882/hibernate-tutorial-for-beginners-using-xml-annotations-and-property-configurations

你可以写一个 "CustomUniqueConstraintValidator" 有点像

中提到的

http://www.journaldev.com/2668/spring-mvc-form-validation-example-using-annotation-and-custom-validator-implementation

您还可以将注释中的参数传递给自定义验证器。 例如

@CustomValidDate("columnName")

制作适用于任何字段/列的通用 class 1. 你可以写一个通用的自定义验证器 2. 使用注释参数(在每个 class 属性上)传入 table 名称和列名称。 3. 然后在验证器中,您可以使用 table 名称、列名来应用您的验证逻辑(唯一等)。

谢谢, 保罗