今までデータベース作成にhbm2ddl=update
を使用してきました。しかし今は、hbm2ddl
プロパティを削除し、HibernateのSchemaExport
ツールを使用して、Hibernate Annotatedモデルクラスに基づいてSQL文を作成します。 SchemaExportも今完了しています。私は、Hibernateは、データベースを生成し、SchemeExport 2つのデータベースにmysqldiff
ツールを使用して、スキーマSQLが同じで生成されたことを確認していたときにDDL生成時の検証アノテーションを認識しないようにHibernateを制限する
は、しかし制約の同じ種類を持っていないいくつかの列があり、(Hibernateは&はSchemaExportが生成生成しました) 。
と仮定Hibernateは、テーブルには列制約を次のように生成している以下のモデル
public class User {
@Id
// some generation strategy
private int id;
@Column(name = "first_name")
@NotNull
private String firstName;
@Column(name = "someField", length = 50)
@Size(min = 3, max = 20)
private String someField;
}
を取ります。
`first_name` varchar(255) NOT NULL,
`someField` varchar(20) DEFAULT NULL
SchemeExport generated Schemaには次のコンストレインがあります。
`first_name` varchar(255) DEFAULT NULL,
`someField` varchar(50) DEFAULT NULL
だから、SchemaExportのアカウント(right
)にのみデータベース関連の注釈をとりながら、Hibernateの生成データベースはDDL生成(wrong
)の際に考慮にも豆の検証を要することは明らかです。私はmax = {x}
を使用して列の値を制限するが、length = >max
を定義知っ
は(同じ@NotNull
& nullable = true -> default
のために行く)かなり役に立たないですが、私のポイントは、検証の注釈のみを検証するために使用すべきであるとデータベースreleated注釈が唯一のDDL生成に使用されるべきです右..? ddlの生成中に検証アノテーションを考慮しないように休止状態を指示する方法はありますか?
私は図書館
Hibernate 4.2.7
Spring 4.1.4 (Java based Bean configs, no hibernate.cfg.xml)
次のバージョンの問題のが、正反対の必要性と同様なものを使用しています。私は、ddl世代がSchemaExportツールを認識するのはなぜですか、SchemaExportツールを認識できないのか、それとも反対であるのかについて、適切で説明できる答えは見つかりません。
Why does Hibernate Tools hbm2ddl generation not take into account Bean Validation annotations?