2010-04-24 5 views
1

Je rencontre un problème lors de l'utilisation de Apache OJB avec Spring 2 dans mon application Web. J'utilise le descripteur de référence OJB avec 2 propriétés de clé étrangère. J'ai un objet A (parent) et un objet B (objet référencé). La chose est, pour un objet A, il peut y avoir ou non un objet B.OJB Reference Descriptor 1: 0 relation? Dois-je définir auto-récupérer sur false?

Dans le cas où il n'y a pas d'objet B pour aller avec l'objet A, l'objet B semble être instancié (au printemps?) de toute façon. Cependant, je ne peux pas accéder aux membres de l'objet B.

Chaque fois que je teste si l'objet B == null, il renvoie toujours false même s'il n'y a pas de valeur correspondante dans la base de données.

Depuis cet objet n'est jamais nulle, je pensais que je peux tester le membre de l'objet comme ceci:

if (objectb.getDocumentNumber == null) {return false; }

Cependant, je reçois une exception dans le jsp:

javax.servlet.jsp.el.ELException: An error occurred while getting property 
"documentNumber" from an instance class 
org.sample.pojo.Objectb$$EnhancerByCGLIB$$78022a2 

et cette exception dans le débogueur quand il est la création du objectB:

com.sun.jdi.InvocationException occurred invoking method. 

Je devine que le descripteur de référence doit être une relation 1: 1 +, au lieu d'une relation 1: 0+ . Je me demandais si je devrais mettre la propriété 'auto-retrieve' à false, puis utiliser le PersistenceBroker.retrieveAllReferences (Object obj); méthode comme indiqué. Cependant, la valeur de retour de cette méthode est 'void', donc je suppose que Spring crée en quelque sorte, et définit la classe de référence pour moi. (Je reviens au même problème que moi.)

J'ai besoin d'un moyen de tester si l'objet de référence existe en premier. Sinon, n'appelez pas cette méthode retrieveAllReferences, mais je ne vois pas comment.

Est-ce que je vais tout à fait faux? Est-ce que le descripteur de référence n'autorise pas les relations 1: 0? N'avez-vous pas trouvé de solution à mon problème?

Vos suggestions sont grandement appréciées!

Répondre

0

Je l'ai compris. Juste au cas où cela aidera quelqu'un d'autre, je mets proxy = false.

Cela fonctionne pour moi, car en le définissant à false, il ne créera pas un objet de référence temporaire, et je pourrais tester null avec cela.

Merci quand même.

+0

Il semble que je rencontre le même problème que vous, je veux créer un objet, et obtenir cette erreur lors du débogage. Je veux savoir où avez-vous défini 'proxy = false'? thx ~ – xyy