Я иду из eclipselink и пытаюсь работать самостоятельно через Hibernate.Как загрузить фактическую ассоциацию сущностей Hibernate, а не прокси LAZY
Предположим, у нас есть класс Car
и класс Wheel
. Класс Car
имеет n колес. Оба объекта связаны с двунаправленной ассоциацией. Что еще более важно на Wheel
стороны у меня есть Car
ссылки:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "car_id")
private Car car;
плюс поглотитель.
Теперь я хочу получить колесо, используя его идентификатор. Из моего EntityManager
(не спящий режим Session
). Я инициализировать EntityManager
так:
EntityManagerFactory emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
EntityManager em = emf.createEntityManager();
Следующим шагом является извлечение колеса, как это:
Wheel wheel = em.find(Wheel.class, 1);
Колесо вернуть разыскиваемого класс и его штраф. Теперь я хочу знать, какой автомобиль является родителем колеса что-то вроде:
Car car = wheel.getCar();
С EclipseLink, реальная машина была бы загружена. Вместо hibernate вместо этого загружается класс прокси.
Единственное решение, которое я разработал до сих пор, это установить FetchType.EAGER или напрямую получить соединение. Я понял, что оператор SQL в Hibernate все еще выполняется, но никакого реального объекта не доставлено. Также после
Hibernate.initalize(car)
Я не могу получить автомобиль.
Есть ли способ вернуть ожидаемый объект без формирования запроса или с нетерпением?
Да. Когда колесо будет восстановлено, я верну правильный объект из базы данных.На следующем шаге я делаю wheel.getCar() ;. В eclipselink автомобиль загружается мгновенно (выполняется запрос), и я получаю реальный объект Car. В спящем режиме кажется, что я возвращаю только прокси-объект (даже если запрос выполняется, как я вижу в журнале). Вопрос заключается в том, как вернуть реальный объект после того, как он не сделает реальность или не начнет выборку в первую очередь. Надеюсь это поможет. – whereismydipp
Потому что мне нужен реальный объект автомобиля вместо прокси. Я проверил объект в отладчике ... его определенно прокси :). – whereismydipp
Зачем вам нужен настоящий объект? Что вы хотите сделать, это требует объекта, а не прокси? – rghome