我知道这个论坛不是新问题,但我很困惑,我该怎么做。
问题:我正在使用spring mvc + hibernate开发一个应用程序。对于服务器端验证,我在控制器中使用@valid annotation,在bean中使用@ null和@notNull注释。
e.g
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中保存。
但我想使用没有任何验证器类的注释来验证唯一约束,参照完整性和其他约束。
有可能吗?如果不是,那么最好和最简单的方法是什么(编码较少)?如果框架会为我做这件事,我将不胜感激。
答案 0 :(得分:1)
Saurabh,
对于表中的唯一约束,
@Id
您还可以通过hibernate注释强制执行引用完整性 例如。
@OneToOne(mappedBy = "foo")
这是一个示例帖子
Referential integrity with One to One using hibernate
这是一个非常详细的教程,也在探索相同的内容:
你可以写一个" CustomUniqueConstraintValidator"有点像
中提到的您还可以将注释中的参数传递给自定义验证器。 例如
@CustomValidDate("columnName")
创建适用于任何字段/列的泛型类 你可以写一个通用的自定义验证器 2.使用annotaiton参数(在每个类属性上)传入表名和列名。 3.然后在验证器中,您可以使用表名,列名来应用验证逻辑(唯一等)。
谢谢, 保罗