1

Hibernate エンティティから DDL を生成しています。一部のエンティティは、JSR 303 バリデータ アノテーションを使用しています (javax.validation.constraints.Max - はその 1 つです)。

DDL は、Hibernate Tools 4.0.0 CR1 + 関連する Ant タスクを使用して生成されます。

問題は、すべてのテキスト列 (@Max(32) によって制限されている場合でも) が VARCHAR(255) として生成されることです。org.hibernate.tool.hbm2ddl.SchemaExport クラス (および関連) をデバッグしようとしました。私が見たところ、org.hibernate.cfg.Ejb3Column の構築中に Validator アノテーションに関連するロジックを含む場所はありません。

「hibernate.validator.apply_to_ddl」プロパティも変更しようとしましたが、成功しませんでした。

どんなヒントでも大歓迎です。

コンポーネント/ライブラリ:

  • JDK6
  • Hibernate Validator 4.3.0 最終版
  • Hibernate Commons Annotations 4.0.2 最終版
  • Hibernate Core 4.2.2 最終版
  • Hibernate Entity Manager 4.2.2 最終版

ラファル

4

2 に答える 2

1

hbm2ddlJSR 303 アノテーションは考慮されません。この種のことは、ツールの観点からは理にかなっています。JSR 303 別名 bean-validation が JVM で動作している間に、データベースの「コード」(DDL) を生成します。

lengthデータベースのサイズを修正するには、JPA@Columnアノテーションのプロパティを設定する必要があります。はい、サイズの制約を複製する必要があるのは醜いですが、それがその方法です。

于 2013-05-27T12:15:36.370 に答える