2009-08-17 10 views
2

とレガシークラス、私は新しいDBテーブルにレガシークラスをマッピングしたいHibernateはHibernateは3考えると引数のコンストラクタ

をマッピングします。 (私は従来のモデル.jarを使用し、これらのオブジェクトを新しいデータベースに格納する必要があります) しかし、私のレガシーオブジェクトはデフォルトの引数なしコンストラクタを宣言せず、APIの一部であるため契約を変更できませんモデル。 (従来のアプリで共有)。私はこれのために新しいクラスを書いておらず、1つのクラスから別のクラスへトランスコードしたくない。

私はクラスに3つの属性があり、デフォルトのコンストラクタ(arg0、arg1、arg2)のみがあり、各argはdb(3 colでテーブル)の列にマップされなければならないとします。私はオブジェクトを格納して検索する必要があります。

デフォルトの引数なしコンストラクタを宣言する必要はありませんか?インターセプターを使用していますか? argsを使ってコンストラクタを呼び出すために3つのカラムにアクセスすることは可能でしょうか?

NB:申し訳ありませんが、デベロッパーが3 argsコンストラクターを使用するように、これらの3つの属性にsetterはありません。

ありがとうございます。

答えて

1

コンストラクタを呼び出すインターセプタを実装できます。

このforum postを参照してください。そこにはおそらくより良いリソースがあります。

+0

こんにちは、ありがとうございました。しかし、私はその解決策が私に3つの引数のコンストラクタに3つの列をマップさせるとは思わない。私はEmptyInterceptorがどのように署名をインスタンス化するのか理解できません。 –

0

これを解決するには、おそらくタプラライザを実装することができます。ここにはAPI docがあります。ここにはsome documentationもあります。