Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JPA、Hibernate中验证用户名长度的最佳方法_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java 在JPA、Hibernate中验证用户名长度的最佳方法

Java 在JPA、Hibernate中验证用户名长度的最佳方法,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我正在为自己编写应用程序,想知道当我在Hibernate中使用JPA时,验证用户名/密码长度的最佳方法是什么? 首先,我想添加@Columnlength=20,你必须知道我的应用程序由RESTful服务组成,但当有人试图添加用户名超过20个字符的用户实体时,它会导致DataIntegrityViolationException 我知道我可以在SpringUserController中处理这个问题,但在我看来还不清楚。这个异常可能意味着所有涉及用户实体的东西都有问题 我还可以在将用户名持久化到数据

我正在为自己编写应用程序,想知道当我在Hibernate中使用JPA时,验证用户名/密码长度的最佳方法是什么? 首先,我想添加@Columnlength=20,你必须知道我的应用程序由RESTful服务组成,但当有人试图添加用户名超过20个字符的用户实体时,它会导致DataIntegrityViolationException

我知道我可以在SpringUserController中处理这个问题,但在我看来还不清楚。这个异常可能意味着所有涉及用户实体的东西都有问题

我还可以在将用户名持久化到数据库之前验证它,可能会创建并抛出一些UserNameSizeExceedeException或类似的东西,但我很肯定,JPA开发人员已经找到了解决这种情况的方法

你能给我推荐什么?
谢谢

一个选项是使用实现的。

一个选项是使用实现的。

以下是最简单的解决方案:

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个错误的请求和空的正文?或者某种信息哪个字段填错了?