Я использую EclipseLink в качестве поставщика JPA в проекте Java SE. Я правильно настроил плетение, чтобы позволить Lazy Loading.JPA + EclipseLink - Lazy Загрузка с закрытым EntityManager
В отличие от Hibernate (который бросает LazyInitializationException), EclipseLink может получить прокси-связь LAZY, даже с закрытым EntityManager. Чтобы запустить этот запрос, он получает новое соединение из пула.
Есть ли какая-то настройка, которая отключает или изменяет поведение этой функции? Мне нужно получить нулевое значение или исключение при попытке получить доступ к выгруженному атрибуту, например, Hibernate.
Пример:
List<Customer> customers = entityManager.createQuery("from Customer c", Customer.class).getResultList();
entityManager.close(); // Closing the EntityManager
for (Customer customer: customers) {
customer.getAddress(); // Here EclipseLink executes a query to get the relationship.
}
Благодаря.
Спасибо, но эта модель не решает мою проблему. Мне нужно, чтобы EclipseLink не делал запросы, чтобы возвращать отношения LAZY, мне нужно, чтобы он возвращал значение null. –
Я бы посоветовал против «открытой сессии в поле зрения»: http://blog.jhades.org/open-session-in-view-pattern-pros-and-cons/ https: // блог.frankel.ch/the-opensessioninview-antipattern Это считается антипаттерном в Hibernate, и я сомневаюсь, что EclipseLink считает его намного лучше. –