大きなアプリケーションで EAGER の関係に問題があります。このアプリケーションの一部のエンティティはEAGER
、他のエンティティと関連付けられています。これは、一部の機能では「毒」になります。
私のチームはこの機能を最適化する必要がありますが、アプリケーション全体をリファクタリングする必要があるため、フェッチ タイプを LAZY に変更することはできません。
それで、私の質問: 返されたエンティティの EAGER 関連付けを無視して特定のクエリを実行する方法はありますか?
例: このエンティティ Person がある場合、Person を検索するクエリを実行するときにアドレス リストを取得したくありません。
@Entity
public class Person {
@Column
private String name;
@OneToMany(fetch=FetchType.EAGER)
private List<String> address;
}
Query query = EntityManager.createQuery("FROM Person person");
//list of person without the address list! But how???
List<Person> resultList = query.getResultList();
ありがとう!
更新しました
私が見つけた唯一の方法は、エンティティを返さず、エンティティの一部のフィールドのみを返すことです。しかし、エンティティ (私の例ではエンティティ) を返すことができる解決策を見つけたいと思いますPerson
。
Hibernateで同じテーブルを2回マップできるかどうか考えています。このようにして、EAGER アソシエーションなしで同じテーブルをマッピングできます。これはいくつかのケースで私を助けます...