2

最高のパフォーマンスと検証の利便性を実現するために、文字列フィールドに必要な注釈はどれですか?

データベース: MySQL

地区名を格納するフィールド

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

これは varchar(50) に変換されますか? または、具体的にこれが必要です:

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

そして、別の 2 つの注釈

@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) が同時に必要だと思いますか? それとも、これら 2 つのうちの 1 つが自動的にもう 1 つを暗示しますか?

ありがとう。

4

1 に答える 1

6

私の知る限り、Stringこれらの注釈で変数をマークすると、次のようになります。

  1. @javax.persistence.Column(length=50)
  2. @javax.persistence.Column(columnDefinition='varchar(50)'). 注:私はpostgreSQLを使用しています。これにより、文字が異なるデータ型の列定義が作成されます
  3. @com.avaje.ebean.validation.Length(50)

上記の 3 つの注釈の目的は同じです。これらは、データベース上のデータ型と文字character varyingの長さで列定義を作成します。50

がないと@Constraint.MaxLength(50)、長さが 50 を超える入力値を入力すると、次のような例外が発生します。

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

上記の例外を処理する方法があるはずだと思いますが、正直なところ、今までそれを行う方法がわかりません。


アドバイス

あなたへの私のアドバイスは、 annotation を使用して、上記の 3 つの注釈 (好みに応じて) から 1 つを選択することです@Constraint.MaxLength(50)。私にとっては、これが最も簡単でシンプルな方法であり、play フレームワーク scala-template-helper を使用して簡単にフォームを作成できます。

于 2013-04-23T09:19:49.737 に答える