2016-03-28 11 views
0

今までデータベース作成に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?

答えて

1

あなたはにプロパティ_hibernate.validator.apply_to_ddl_を設定することによって、DDLにビーン検証制約の適用を無効にすることができます。

関連する問題