OJB Ссылка Дескриптор отношения 1: 0? Должен ли я установить для автоматического получения значение false? - PullRequest
1 голос
/ 24 апреля 2010

У меня проблема при использовании Apache OJB с Spring 2 в моем веб-приложении.

Я использую ссылочный дескриптор OJB с двумя свойствами внешнего ключа. У меня есть объект A (родитель) и объект B (объект ссылки). Дело в том, что для объекта A может существовать или не быть объект B.

В случае, когда нет объекта B, который можно использовать с объектом A, объект B, по-видимому, создается (через Spring?) В любом случае. Однако я не могу получить доступ к членам объекта B.

Всякий раз, когда я проверяю, равен ли объект B == нулю, он всегда возвращает 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 Ответ

0 голосов
/ 27 апреля 2010

Я понял это. На всякий случай, если это кому-нибудь еще поможет, я устанавливаю proxy = false.

Это работает для меня, потому что, установив его в false, он не создаст временный ссылочный объект, и я мог бы проверить на ноль с этим.

В любом случае, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...