Отключение сущностей в EclipseLink - PullRequest
0 голосов
/ 15 мая 2018

У меня проблема с отсоединением сущностей в JPA 2.1 EclipseLink.

У меня есть приложение JavaEE с некоторыми сущностями, для которых все отношения установлены с отложенной загрузкой.Я использую join fetch во всех моих запросах к базе данных, чтобы получать только те объекты, которые мне нужны.Я использую Джексона (FasterXml) для преобразования объектов в JSON (для JAX-RS и т. Д.)база данных, когда Джексон преобразует этот объект в JSON (так как это преобразование вызывает все получатели в преобразуемой сущности).

Моя проблема в том, что отсоединение не работает, и когда я просматриваю журналы JPA, я вижу, что все члены сущности конвертируются и загружаются по запросу в базе данных.Это происходит, когда Джексон конвертирует объект в JSON, и я предполагаю, что это потому, что Джексон вызывает геттеры при конвертации объекта.Почему это происходит и как я могу это исправить?

1 Ответ

0 голосов
/ 11 июня 2019

Отсоединение для EclipseLink считалось исключительно предназначенным для прекращения отслеживания изменений и извлечения их из EM для повышения производительности.Доступ к неотобранному атрибуту, согласно спецификации JPA, приводит к исключению;что-то, что ни один пользователь, казалось, действительно не запрашивал на раннем этапе, поэтому поведение не было реализовано.Если вы хотите такое поведение, запросите его.

Любой может проверить состояние выборки ленивого свойства в своем методе доступа и вызвать исключение приложения.Это потребует изменения результирующего улучшенного Java-кода, который EclipseLink генерирует с помощью ткачества для доступа к ленивым свойствам.

Другое решение может заключаться в использовании запроса конструктора .Запросы конструктора вместо возврата объектов управляемых объектов передают значения выбора в конструктор Java, поэтому в него включаются только данные, извлеченные в запросе.Эти объекты не являются сущностями, поэтому они полностью отделены, и может быть создан любой объект Java, даже существующие классы сущностей.

...