【问题标题】:Spring Hibernate Bean Validation @validSpring Hibernate Bean验证@valid
【发布时间】:2015-05-01 08:18:21
【问题描述】:

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

问题:我正在使用 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;

此验证正常进行,数据也保存在 DB 中。

但我想验证唯一约束、参照完整性和其他约束使用注释而不使用任何验证器类。

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

【问题讨论】:

    标签: java spring hibernate validation spring-mvc


    【解决方案1】:

    苏拉布,

    对于表中的唯一约束,

     @Id
    

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

    @OneToOne(mappedBy = "foo")
    

    这是一个示例帖子

    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")
    

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

    谢谢, 保罗

    【讨论】:

    • 嗨,保罗,谢谢你的回答..但是在上面的 URL 中,他们提到了项目设置..他们不是在谈论验证...我希望我在 BindingResult 对象中出现验证错误.. .就像我得到了 NotEmpty NotNull ..这些符号..或者你可以说..我希望我的 bean 与“notEmpty”符号一起从 DB 中得到验证
    • 参照完整性是次要部分......现在我正在努力在单个表中验证唯一约束等
    • @sourabh 签出这篇文章stackoverflow.com/questions/3495368/…这是你想要做的吗?
    • 现在我要这样做codetutr.com/2013/05/29/… 验证唯一约束,但我需要更多信息...我想让它通用,就像对任何类和 ant DB 表和任何列都有用名称....我需要更多帮助..我该怎么做。如何使用反射或弹簧框架注入“任何”类来检查唯一值
    • 所以您正在查看“CustomUniqueConstrainValidator”?但问题是您想在任何模型对象上使用它 - 并且适用于该特定字段/表?
    猜你喜欢
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多