2012-02-09 3 views
1

Hibernateエンティティに一連のStringベースの属性があります。デフォルトでは、HibernateはこれをVARCHAR(255)にマッピングします。これは、いくつかの値のために十分な長さではなく、属性*メソッドが長く、私が定義した長さより*私は例外をスローするのではなく、カラムに合わせてデータを自動的に切り捨てるためにhibernateを取得します。

@Column (length) 

を使用して、これを変更することができます知っている。しかし、時には、私は、データがセットに渡される場合がありますこれらのケースでは、私はちょうどhibernateが基本的にs.substring(0、length)を実行したいだけで、代わりに例外をスローします。

データを自動的に部分文字列に変換する方法はありますか。私はすべての設定メソッドに長さのチェックを追加することができない場合、私はデータベースの列の長さを変更する場合は、コードを更新します。これは重大な頭痛ではありませんが、私がこれを避けることができればいいと思います。

+0

可能な重複:http://stackoverflow.com/q/6882009/346561 –

+0

@Jesseウェッブはいあなたは、これは同じ問題で正しいですが、私は私の質問を考えますHibernate Interceptorsを使用した実際のソリューションが提供できるなら、それはより良いでしょう。 –

答えて

0

休止状態のUserTypeを実装し、

for (... map : config.GetClassMapping()) 
{ 
    // iterate properties and set usertype to all properties with columns length set 
} 
関連する問題