Java 在JPA、Hibernate中验证用户名长度的最佳方法
我正在为自己编写应用程序,想知道当我在Hibernate中使用JPA时,验证用户名/密码长度的最佳方法是什么? 首先,我想添加@Columnlength=20,你必须知道我的应用程序由RESTful服务组成,但当有人试图添加用户名超过20个字符的用户实体时,它会导致DataIntegrityViolationException 我知道我可以在SpringUserController中处理这个问题,但在我看来还不清楚。这个异常可能意味着所有涉及用户实体的东西都有问题 我还可以在将用户名持久化到数据库之前验证它,可能会创建并抛出一些UserNameSizeExceedeException或类似的东西,但我很肯定,JPA开发人员已经找到了解决这种情况的方法 你能给我推荐什么?Java 在JPA、Hibernate中验证用户名长度的最佳方法,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我正在为自己编写应用程序,想知道当我在Hibernate中使用JPA时,验证用户名/密码长度的最佳方法是什么? 首先,我想添加@Columnlength=20,你必须知道我的应用程序由RESTful服务组成,但当有人试图添加用户名超过20个字符的用户实体时,它会导致DataIntegrityViolationException 我知道我可以在SpringUserController中处理这个问题,但在我看来还不清楚。这个异常可能意味着所有涉及用户实体的东西都有问题 我还可以在将用户名持久化到数据
谢谢 一个选项是使用实现的。一个选项是使用实现的。以下是最简单的解决方案:
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;
...
@Length(max = 40, message = "First name is too long")
@NotEmpty(message = "First Name is required.")
@Column(name = "FIRST_NAME")
private String firstName;
在这里您可以找到maven依赖项:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.0.Final</version>
<exclusions>
<exclusion>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</exclusion>
</exclusions>
</dependency>
以下是最简单的解决方案:
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;
...
@Length(max = 40, message = "First name is too long")
@NotEmpty(message = "First Name is required.")
@Column(name = "FIRST_NAME")
private String firstName;
在这里您可以找到maven依赖项:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.0.Final</version>
<exclusions>
<exclusion>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</exclusion>
</exclusions>
</dependency>
Hibernate Validator.,如上面其他用户所述。如果您正在寻找一个示例,Spring in action book有一个很好的例子
干杯 Hibernate Validator.,如上面其他用户所述。如果您正在寻找一个示例,Spring in action book有一个很好的例子
干杯 @Columnlength=20并不意味着验证。它用于描述您希望从JPA实体生成表的情况。Hibernate使用了一些验证程序。您可以使用@Length,也可以使用@notNull或@NotEmptywell。。这是有道理的:那么最好的方法是创建我自己的验证器并验证字段?我从未使用过验证器:手动检查用户名大小的方法是:username.lenght>3,而不是特定的验证器。就在@Column add@Length的上方……下面是一个示例:@Lengthmax=40,message=First name太长@NotEmptymessage=First name是必需的@Columnname=FIRST\u NAME私有字符串firstName;只是澄清一下-@列是在架构生成时由基础数据库计算的,因此它不符合您的要求。@Columnlength=20并不意味着验证。它用于描述您希望从JPA实体生成表的情况。Hibernate使用了一些验证程序。您可以使用@Length,也可以使用@notNull或@NotEmptywell。。这是有道理的:那么最好的方法是创建我自己的验证器并验证字段?我从未使用过验证器:手动检查用户名大小的方法是:username.lenght>3,而不是特定的验证器。就在@Column add@Length的上方……下面是一个示例:@Lengthmax=40,message=First name太长@NotEmptymessage=First name是必需的@Columnname=FIRST\u NAME私有字符串firstName;只是澄清一下-@列在生成架构时由基础数据库进行计算,因此它不符合您的要求。我知道,但仍然-当我尝试持久化此实体时,我得到ConstraintViolationException,我想知道如何通知使用rest服务的客户端键入wrond:username的数据,密码等。我的意思是:ConstraintViolationException太笼统了,实际上没有准确直接的信息哪一部分出错了。你可以捕获异常,如果它是ConstraintViolationException类型,则向它们返回一条特定的消息,就像大多数我不知道的网站一样,所以我想问:如果constraintViolationException发生,我的服务方法应该返回什么?只有400个错误的请求和空的正文?或者某种类型的信息哪个字段填错了?我明白了,但仍然-当我试图持久化这个实体时,我得到了ConstraintViolationException,我想知道如何通知使用我的rest服务的客户键入了哪些数据:用户名、密码等。我的意思是:ConstraintViolationException太笼统了,实际上没有准确和直接的信息哪一部分出错了您可以捕获异常,如果它是constraintViolationException类型,则向它们返回一条特定的消息,就像大多数我不知道的网站一样,因此想问:如果constraintViolationException发生,我的服务方法应该返回什么?只有400个错误的请求和空的正文?或者某种信息哪个字段填错了?