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
这里有一个非常详细的教程,也探讨了同样的问题:
你可以写一个 "CustomUniqueConstraintValidator" 有点像
中提到的
您还可以将注释中的参数传递给自定义验证器。
例如
@CustomValidDate("columnName")
制作适用于任何字段/列的通用 class
1. 你可以写一个通用的自定义验证器
2. 使用注释参数(在每个 class 属性上)传入 table 名称和列名称。
3. 然后在验证器中,您可以使用 table 名称、列名来应用您的验证逻辑(唯一等)。
谢谢,
保罗
我知道这不是这个论坛的新问题,但我很困惑我该怎么办。
问题:我正在使用 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
这里有一个非常详细的教程,也探讨了同样的问题:
你可以写一个 "CustomUniqueConstraintValidator" 有点像
中提到的您还可以将注释中的参数传递给自定义验证器。 例如
@CustomValidDate("columnName")
制作适用于任何字段/列的通用 class 1. 你可以写一个通用的自定义验证器 2. 使用注释参数(在每个 class 属性上)传入 table 名称和列名称。 3. 然后在验证器中,您可以使用 table 名称、列名来应用您的验证逻辑(唯一等)。
谢谢, 保罗