У меня проблема с отношениями EAGER в большом приложении. Некоторые объекты в этом приложении имеют EAGER связи с другими объектами. Это становится «ядом» в некоторых функциях.
Теперь моей команде нужно оптимизировать эти функции, но мы не можем изменить тип выборки на LAZY, потому что нам потребуется рефакторинг всего приложения.
Итак, мой вопрос: есть ли способ выполнить конкретный запрос, игнорируя ассоциации EAGER в моем возвращаемом объекте?
Пример: когда у меня есть этот объект 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. Таким образом, я могу сопоставить ту же таблицу без ассоциаций EAGER. Это поможет мне в некоторых случаях...