@Embedded
フィールドが遅延して取得される必要があるクラスを設定する方法を理解しようとすると、いくつか問題があります。私は@Basic(fetch = FetchType.LAZY)
でフィールドに注釈を付けることを試みましたが、永続性APIはフィールドをSerializable
を実装する基本型として扱うため、フィールドをデータベース(postgresql)のBYTEA
フィールドにマッピングします。私はダービーでもそれをテストし、同じことが起こります。 @Embeddedフィールドを遅くフェッチする方法はありますか?
@Embedded
フィールドに注釈を付けるのではなく、個別に
@Basic(fetch = FetchType.LAZY)
で
@Embeddable
クラスのフィールドに注釈を付けることを試みました。この場合、生成されたスキーマは正しいですが、エンティティのインスタンスをロードするときに、フィールドが熱心に取得されます。
私の理解では、@Basic
アノテーションは基本的なフィールド/プロパティでのみ使用されるため、最初のケースが予想されます。しかし、@Basic(fetch = FetchType.LAZY)
という注釈が付けられていても、@Embeddable
クラスのフィールドが熱心に取り出されるのはなぜですか?また、フェッチ戦略は@Basic
と関係の注釈で指定できますが、フィールドを遅延して取得するよう指定する方法はありますか?私はEclipseLink 2.6を使用していますが、他のバージョンのEclipseLinkや他のプロバイダで動作が異なるかどうかを教えてください。