Eclipselink для доступа к различным уровням ассоциаций - PullRequest
0 голосов
/ 24 апреля 2019

Я новичок в JPA / EclipseLink и создаю спокойный интерфейс для базы данных, которая содержит информацию о состоянии выполнения программы.Большая часть информации, которую мне нужно сделать, доступна через таблицу RUN.Таблица с именем RUNEVENT имеет внешний ключ, который ссылается на таблицу RUN.Затем есть таблица с именем TASKEVENT, которая имеет внешний ключ для RUNEVENT и так далее, всего 7 таблиц.Некоторые из отношений один-к-одному, а некоторые-один-ко-многим.Классы сущностей были определены для всех таблиц, и эти же классы используются для преобразования в XML для ответов REST.Большую часть времени я хочу получить результаты запроса, которые состоят из нескольких записей прогона, и мне нужны только данные из таблицы RUN (т.е. я не хочу следить за связями).Тем не менее, есть один случай, когда мне нужно просканировать все ассоциации и создать ответ xml.Если я выбираю запросы к таблице RUN, используя FetchType.LAZY и @XmlTransient, чтобы заполнить только сами объекты Run Entity.Запросы выполняются очень быстро, но у меня нет возможности просмотреть всю информацию для другого варианта использования.Если я не использую FetchType.LAZY и @XmlTransient для этих свойств.Запросы и заполнение результатов занимает слишком много времени, чтобы их можно было использовать при выполнении общих запросов к таблице RUN.

Я пытался выделить объект RUN, чтобы он не был подключен через внешний ключ к внешнему ключу.RUNEVENT сущность путем присвоения имени внешнему ключу @Transient (для JPA).Затем я успешно запрашиваю в таблице RUN идентификатор RUN_ID, который будет использоваться для запроса таблицы RUNEVENT.Затем, когда я выполняю запрос к таблице RUNEVENT, я получаю список результатов, который, как я ожидаю, будет объектом RUNEVENT, но вместо этого он возвращает объекты RUN, как будто он следует по внешнему ключу обратно в таблицу RUN, а не запрашивает таблицу RUNEVENT напрямую.

Короче говоря, в большинстве случаев я просто хочу, чтобы данные в таблице RUN не следовали ассоциациям, когда наборы результатов имеют много объектов RUN.Однако в некоторых случаях я хочу углубиться в глубину и получить все ассоциации и их сущности, в частности, для одной записи прогона.

В любом случае можно ли выполнить то, что я пытаюсь сделать через JPA, или мне нужен доступ?базы данных напрямую?

...