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