Моего решения состоит из 3 различных проектов:Java-EE6: FetchType.LAZY со статическим ткачеством бросает странное исключение
EJB проекта с Netbeans автоматически генерируемыми Фасадами для управления классами сущностей и persistence.xml
класс библиотека, которая содержит все @Entity аннотированную и статический сотканы классы баз данных и удаленные интерфейсы для фасада объекта EJB (совместно EJB и обособленных клиента)
Автономные клиента, который состоит в основном Качели GUI классов
Я использую Glassfish 3.1.2, EclipseLink 2.3 в качестве JPA-провайдера, Netbeans 7.1.1 и базы данных MySQL. Я настроил Ant-задачу, которая статически перетаскивает мои классы объектов на основе persistence.xml.
У меня есть несколько @OneToOne, @ManyToOne и @ManyToMany аннотированные отношения между сущностями, украшенными fetch = FetchType.LAZY.
Теперь я получаю все вместе следующие ошибки:
Exception in thread "Mainframe Loader" Local Exception Stack:
Exception [EclipseLink-7242] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.ValidationException
Exception Description: An attempt was made to traverse a relationship using indirection that had a null Session. This often occurs when an entity with an uninstantiated LAZY relationship is serialized and that lazy relationship is traversed after serialization. To avoid this issue, instantiate the LAZY relationship prior to serialization.
at org.eclipse.persistence.exceptions.ValidationException.instantiatingValueholderWithNullSession(ValidationException.java:998)
at org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder.instantiate(UnitOfWorkValueHolder.java:220)
at org.eclipse.persistence.internal.indirection.DatabaseValueHolder.getValue(DatabaseValueHolder.java:88)
at org.eclipse.persistence.indirection.IndirectList.buildDelegate(IndirectList.java:244)
at org.eclipse.persistence.indirection.IndirectList.getDelegate(IndirectList.java:414)
at org.eclipse.persistence.indirection.IndirectList.size(IndirectList.java:752)
at ch.lawsuite.gui.mail.PosteingangUI.updateDokumentTable(PosteingangUI.java:47)
at ch.lawsuite.gui.mail.MailboxUI.updateDokumentTables(MailboxUI.java:81)
at ch.lawsuite.gui.mail.MailboxUI.initMailboxes(MailboxUI.java:37)
at ch.lawsuite.gui.mail.MailboxUI.<init>(MailboxUI.java:23)
at ch.lawsuite.gui.MainframeUI.initModules(MainframeUI.java:191)
at ch.lawsuite.gui.login.LoginUI$MainframeLoader.run(LoginUI.java:131)
Любая помощь высоко ценится. Я полностью был в тупике с этим вопросом в течение более чем недели теперь :-(
Большое спасибо заранее
Это из-за «клиента», который удаленно? Если так, то что вы ожидали бы? – esej
Да, исключение выбрано из удаленного автономного клиента. что объект, который лениво ассоциируется, автоматически извлекается из базы данных, когда к нему обращаются в первый раз ... Неужели я ошибаюсь в этом случае? – salocinx