Отображение таблицы сущностей Exchange во время выполнения с Eclipselink - PullRequest
2 голосов
/ 05 мая 2011

Можно ли изменить отображение таблицы сущностей во время выполнения с Eclipselink?У меня есть отображение Entity-View, определенное с аннотациями.Теперь у меня есть бизнес-требование: «Если эти представления пусты, попробуйте базовую таблицу».Таким образом, я должен перейти от представления к базовой таблице.

Представление - это просто ВЫБОР на таблице с некоторыми ограничениями.

1 Ответ

2 голосов
/ 05 мая 2011

Когда вам нужно проверить, является ли представление пустым?

Если это можно сделать один раз при запуске, вы можете просто поместить эту проверку в SessionCustomizer и изменить таблицу ClassDescriptor.

Если вам нужно делать это каждый раз, когда вы запрашиваете это, то это гораздо более странно.Вы можете определить MappedSuperclass и два подкласса, один из которых сопоставлен с представлением, а другой - с таблицей, а затем решить в вашем приложении, что использовать.

Вы также можете определить другое представление, которое дает желаемый результат.

Можно получить ClassDescriptor из сеанса во время выполнения и изменить его, но обычно это плохая идея, поскольку другие клиенты / потоки могут использовать дескриптор / сеанс одновременно.

Или просто всегда сопоставляйте с таблицей и фильтруйте то, что имеет отношение к вашему запросу (или дополнительным критериям объединения), вместо использования представления.

...