Это может быть очень простой ответ, так как я уверен, что это не редкость.Я вижу некоторые похожие вопросы, но ничего, что, кажется, не описывает мою проблему.
У меня есть два объекта: машина и человек.Они находятся во взаимоотношениях «многие ко многим», то есть автомобиль может принадлежать нескольким людям, а человек может иметь несколько автомобилей.Car
имеет лениво инициализированный набор Drivers
:
@ManyToMany(targetEntity=Person.class, fetch=FetchType.LAZY)
private Set<Person> people;
Я хочу найти все синие автомобили с владельцами в возрасте до 25 лет:
Criteria foo = persistenceManager.createCriteria(Car.class, "myCarAlias");
Criteria bar = foo.createCriteria("drivers", "myDriverAlias");
//add restrictions on foo and bar for blue and age, respectively
baz = foo.list();
Моя проблема заключается в том, когдаЯ перебираю список и вызываю getDrivers()
на каждом автомобиле, он инициализирует коллекцию и получает всех водителей этого автомобиля.Я думаю, что .list()
, который я пробежал, не устанавливает результаты для каждой машины.
Я получаю ожидаемые результаты, если я вручную запускаю генерирование SQL в спящем режиме, поэтому я вполне уверен, что критерииЭто не проблема.
Я могу понять, почему это происходит, но я не уверен, как обойти это, не обходя каждую машину и не выполняя запрос для водителей на каждой.Я хотел бы избежать этого, если это возможно, и буду признателен за любые советы.
Заранее спасибо!