【发布时间】:2014-11-11 04:31:15
【问题描述】:
我正在为自己编写应用程序,并且想知道在将 JPA 与 Hibernate 一起使用时验证用户名/密码长度的最佳方法是什么? 首先,我想添加 @Column(length = 20) (你必须知道我的应用程序由 RESTful 服务组成)但是当有人尝试添加用户名超过 20 个字符的用户实体时,它会导致 DataIntegrityViolationException。
我知道我可以在 Spring UserController 中处理这个问题,但我认为这并不清楚。此异常可能意味着实际上所有问题(引用用户实体的所有内容)。
我还可以在将用户名持久化到数据库之前验证用户名(可能创建并抛出一些 UsernameSizeExceededException 或类似的东西),但我很确定,JPA 开发人员已经找到了解决这种情况的方法
你能推荐我什么? 谢谢! :)
【问题讨论】:
-
@Column(length = 20)并不意味着验证。它用于描述(如果您想从 JPA 实体生成表)。有 Hibernate 使用的验证器。您可以使用@Length或@notNull或@NotEmpty -
好吧..这很有意义:P所以最好的方法是创建我自己的验证器并验证该字段?我从未使用过验证器 :) 通过 username.lenght > 3 和
-
不是特定的验证器。在
@Column上方添加@Length(...)。 -
这里是一个例子:
@Length(max = 40, message = "First name is too long")@NotEmpty(message = "First Name is required.")@Column(name = "FIRST_NAME")private String firstName; -
澄清一下 -
@Column在模式生成时由底层数据库评估,因此它不符合您的要求。