OJB Ссылка Дескриптор отношения 1:0? Должен ли я установить для автоматического получения значение false?
У меня возникла проблема при использовании Apache OJB с Spring 2 в моем веб-приложении.
Я использую OJB ссылочный дескриптор с двумя свойствами внешнего ключа. У меня есть объект A (родитель) и объект B (объект ссылки). Дело в том, что для объекта А может быть или не быть объект В.
В случае, когда нет объекта B, который можно было бы использовать с объектом A, объект B, кажется, создается в любом случае (через Spring?). Однако я не могу получить доступ к членам объекта B.
Всякий раз, когда я проверяю, является ли Object B == null, он всегда возвращает false, даже если в базе данных нет соответствующих значений.
Поскольку этот объект никогда не является нулевым, я решил, что могу проверить член объекта следующим образом:
if (objectb.getDocumentNumber == null) {return false; }
Тем не менее, я получаю исключение в JSP:
javax.servlet.jsp.el.ELException: An error occurred while getting property
"documentNumber" from an instance class
org.sample.pojo.Objectb$$EnhancerByCGLIB$$78022a2
и это исключение в отладчике при создании объекта B:
com.sun.jdi.InvocationException occurred invoking method.
Я предполагаю, что ссылка-дескриптор должен быть отношением 1:1+, а не отношением 1:0+. Мне было интересно, если я должен установить для свойства 'auto-retrieve' значение false, а затем использовать PersistenceBroker.retrieveAllReferences(Object obj); метод, как указано. Однако возвращаемое значение этого метода 'void', поэтому я предполагаю, что Spring каким-то образом создает и устанавливает для меня ссылочный класс. (Возвращая меня к той же проблеме, что и я.)
Мне понадобится способ проверить, существует ли сначала эталонный объект. Если нет, не вызывайте этот метод retrieveAllReferences, но я не вижу как.
Я все об этом ошибаюсь? Разве ссылка-дескриптор не допускает отношения 1: 0? Любая работа вокруг моей проблемы?
Ваши предложения очень ценятся!
1 ответ
Я понял. На всякий случай, если это кому-нибудь еще поможет, я устанавливаю proxy = false.
Это работает для меня, потому что, установив его в false, он не будет создавать временный объект ссылки, и я мог бы проверить на ноль с этим.
В любом случае спасибо.