Play!Framework 2 Java模型字符串字段长度注释

时间:2013-04-23 02:38:52

标签: jpa playframework annotations playframework-2.1 ebean

为了获得最佳性能和验证便利性,String字段需要哪些注释?

数据库:MySQL

存储地区名称的字段

@Column(length=50)  // javax.persistence.Column

这会转换为varchar(50)吗?或者我特别需要这个:

@Column(columnDefinition='varchar(50)') 

另外两个注释

@MaxLength(50) // play.data.validation.Constraints.MaxLength
@Length(max=50) // com.avaje.ebean.validation.Length, is this one useful or not required anyway?
public String districtName;

我认为我需要@Column(长度= 50)进行定义,而@MaxLength(50)需要同时进行验证?或者这两个中的一个会自动暗示另一个吗?

感谢。

1 个答案:

答案 0 :(得分:6)

据我所知,当我们使用这些注释标记String变量时:

  1. @javax.persistence.Column(length=50)
  2. @javax.persistence.Column(columnDefinition='varchar(50)')。注意:我使用postgreSQL,这将创建具有字符变化数据类型的列定义
  3. @com.avaje.ebean.validation.Length(50)
  4. 上面的三个注释具有相同的目的。这些将在数据库中创建character varying数据类型和50个字符长度的列定义。

    如果没有@Constraint.MaxLength(50),当您输入长度大于50的输入值时,您将获得如下所示的异常:

      

    执行例外   [ValidationException: validation failed for: models.TheModel]

    我认为应该有办法处理上述异常,但老实说我到现在为止还不知道如何做到这一点。


      

    建议

         

    我的建议是使用anotation @Constraint.MaxLength(50)从上面的3个注释中选择一个(这是您的偏好)。对我来说,这是最简单,最简单的方法,你可以使用play框架scala-template-helper轻松制作表单。