Gal*_*lop 2 annotations jpa playframework ebean playframework-2.1
为了获得最佳性能和验证便利性,String字段需要哪些注释?
数据库:MySQL
存储地区名称的字段
@Column(length=50) // javax.persistence.Column
Run Code Online (Sandbox Code Playgroud)
这会被转换为varchar(50)吗?或者我特别需要这个:
@Column(columnDefinition='varchar(50)')
Run Code Online (Sandbox Code Playgroud)
还有另外两个注释
@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;
Run Code Online (Sandbox Code Playgroud)
我想我需要@Column(长度= 50)进行定义,并且@MaxLength(50)需要同时进行验证?或者这两个中的一个会自动暗示另一个?
谢谢.
据我所知,当我们String
使用这些注释标记变量时:
@javax.persistence.Column(length=50)
@javax.persistence.Column(columnDefinition='varchar(50)')
.注意:我使用postgreSQL,这将创建具有字符变化数据类型的列定义@com.avaje.ebean.validation.Length(50)
上面的三个注释具有相同的目的.这些将在数据库上创建具有character varying
数据类型和50
字符长度的列定义.
如果没有@Constraint.MaxLength(50)
,当您输入长度大于50的输入值时,您将获得如下所示的异常:
执行异常
[ValidationException: validation failed for: models.TheModel]
我认为,应该有办法处理上述异常,但老实说,直到现在我还不知道如何做到这一点.
忠告
我的建议是使用anotation从上面的3个注释中选择一个(这是你的偏好)
@Constraint.MaxLength(50)
.对我来说,这是最简单,最简单的方法,您可以使用play framework scala-template-helper轻松制作表单.
归档时间: |
|
查看次数: |
3934 次 |
最近记录: |