2009-08-31 2 views
1

私たちは、別のオブジェクトBを含むオブジェクトAを持っています。私たちはHibernateに、データをクエリし、Aのインスタンスを生成するストアドプロシージャを呼び出しました。私たちは、resultClassプロパティをA.classに設定して@NamedNativeQueryアノテーションを使用しています。 。これは、Hibernateが返されたメタデータに基づいてHibernateを作成する方法を見つけられないかのように、Bのインスタンスが遅延ロードされることを除いて、素晴らしいことです。ストアドプロシージャの 'AS'句の名前をA内のBのネストを反映させ、Bのフィールド名を直接指すように名前を変更しました。xml/annotationなしでHibernate/JPAを使って内部オブジェクトをどのようにマップするのですか?

質問:* .hbm.xmlや巨大な@SqlResultSetMappingアノテーションに頼らずにストアドプロシージャを使用すると、オブジェクトフィールドの読み込みをどのようにしたらいいですか?

答えて

2

できません。 Hibernate documentation

現在、ストアドプロシージャはスカラーとエンティティのみを返します。 <return-join>および<load-collection>はサポートされていません。

<return-join>は、(SPではない)名前付きSQLクエリに熱心にロードされた関連付けをマップするために使用したものです。

+0

@SqlResultSetMappingアノテーションを使用して行うことはできますか、またはすべての子オブジェクトを遅延ロードしていますか? –

+0

'@ SqlResultSetMapping'を使うと、メインと関連する両方のエンティティをクエリ結果として返すことができます。カスタムエンティティの読み込みに使用することはできません(SPを忘れない限り) – ChssPly76

+0

ありがとうございました。最善の方法は、両方のオブジェクトを並べて返し、サービスレイヤに構造を追加することです。 –

関連する問題