2012-05-22 4 views
1

Я работаю над EclipseLink и по соображениям производительности мы установили FetchType.lazy везде, где у нас есть отношения OneToMany. Теперь, настойчивость находится в слое 1, который также имеет другую бизнес-логику, а затем есть еще один EAR, который использует постоянство от уровня 1. При извлечении этих объектов я столкнулся с проблемой, когда elipselink выбрала исключение ClassCast. Немного вникая в проблему, выяснилось, что это из-за ленивой загрузки через несколько ушей.Извлечение вложенных объектов, когда FetchType LAZY

Теперь я думаю, что нужно создать метод в слое 1, который будет вызываться другим ухом, если они хотят загрузить ВСЕ объекты, т. Е. Нетерпеливый механизм загрузки. Мне было интересно, как я могу достичь этого в eclipselink?

ответ

0

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

Если у вас есть несколько сервисов или webapps, которые взаимодействуют, они должны находиться в одном ухе. Если это не так, то скопируйте общие файлы jar в разные уши.

+0

Спасибо, я уже обсуждали это конкретные вопросы, касающиеся пожилых людей должным образом упаковки EAR, но в данный момент я ищу решение этой проблемы я уже упоминал выше. –

1

EclipseLink определяет группы нагрузок, которые позволяют принудительно загружать отношения. API-интерфейс копирования также может использоваться для принудительной загрузки.

See, http://wiki.eclipse.org/EclipseLink/Examples/JPA/AttributeGroup

+0

Не могли бы вы привести мне пример. Я изучал документацию, и я запутался. Представьте, что у меня есть атрибут в моей «ClassA», который является «людьми». У 'classA' и' person' есть oneToMany отношения, то есть класс может иметь много людей, и он был настроен как 'FetchType = lazy'. как бы загрузить его? 'Query.setHint (QueryHints.Loadgroup," person ");'? (игнорировать специфические ошибки компиляции/api). –

Смежные вопросы