【问题标题】:Play!Framework 2 Java model string field length annotationsPlay!Framework 2 Java 模型字符串字段长度注解
【发布时间】:2013-04-23 02:38:52
【问题描述】:

为了获得最佳性能和验证便利性,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(length=50) 来定义和@MaxLength(50) 来同时验证?或者这两个中的一个会自动暗示另一个?

谢谢。

【问题讨论】:

    标签: jpa playframework annotations playframework-2.1 ebean


    【解决方案1】:

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

    1. @javax.persistence.Column(length=50)
    2. @javax.persistence.Column(columnDefinition='varchar(50)')。注意:我使用的是 postgreSQL,这将创建具有不同数据类型的列定义
    3. @com.avaje.ebean.validation.Length(50)

    以上三个注解具有相同的目的。这些将在数据库上创建具有character varying 数据类型和50 字符长度的列定义。

    如果没有@Constraint.MaxLength(50),当输入长度大于50的输入值时,会出现如下异常:

    执行异常 [ValidationException: validation failed for: models.TheModel]

    我认为,应该有一种方法来处理上述异常,但老实说,直到现在我都不知道该怎么做。


    建议

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-10
      • 2013-04-03
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      相关资源
      最近更新 更多