1

org.hibernate.Interceptor.instantiate()インスタンス化を(明らかに)インターセプトし、デフォルト以外のコンストラクターを使用して特定のオブジェクトを手動でインスタンス化するために使用しようとしています。このメソッドの JavaDoc を読み取る場合、実際には、これが Hibernate がそのようなものを公開する全体的なポイントのように見えます。

ただし、私に与えられたのは、エンティティ名、EntityMode、およびSerializable識別子だけです。したがって、唯一のパラメーターとして ID を取るコンストラクターを呼び出すことが私の目標でない限り、私は SOL です。他の (非常に具体的な) コンストラクター呼び出すのに十分な情報しか得られないのに、なぜこのメソッドが存在するのでしょうか? 他のエンティティ プロパティの値を取得するにはどうすればよいですか?

編集:どうやら、さらに作業と調査を行った後、私がやろうとしていることは不可能です。だから私はマイクの答えを受け入れて、それを一日と呼んだ。

4

1 に答える 1

2

インスタンス化インターセプターは、プロパティが設定される前に、新しいマップされたエンティティーをインスタンス化するためのカスタマイズされたメカニズムを提供できるようにするために呼び出されます。このエンティティーは、このインターセプターの呼び出し前には存在しないため、そのプロパティーのいずれかが設定されている可能性はありません。ライフサイクルのこの時点で Hibernate が認識している唯一の値は、エンティティのタイプとエンティティに割り当てられる ID です。インスタンス化後に設定されるプロパティ値ではなく、構成設定などに基づいてインスタンスのインスタンス化を変更するには、このインターセプターを使用します。

これで何を達成しようとしていますか?

于 2013-01-21T18:30:47.107 に答える