在我的网络应用中使用Apache OJB和Spring 2时出现问题。
我正在使用具有2个外键属性的OJB引用描述符。我有一个对象A(父)和对象B(引用对象)。问题是,对于对象A,可能存在或不存在对象B.
在对象A没有对象B的情况下,对象B似乎无论如何都要实例化(通过Spring?)。但是,我无法访问对象B的成员。
每当我测试Object B == null时,即使数据库中没有匹配的值,它也总是返回false。
由于这个Object永远不会为null,我想我可以像这样测试对象的成员:
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
在调试器创建objectB时出现此异常:
com.sun.jdi.InvocationException occurred invoking method.
我猜测引用描述符必须是1:1+关系,而不是1:0+ 关系。我想知道是否应该将属性'auto-retrieve'设置为false,然后使用PersistenceBroker.retrieveAllReferences(Object obj);按照指示的方法。但是,这个方法的返回值是'void',所以我猜测Spring以某种方式创建,并为我设置引用类。 (让我回到我遇到的同样问题。)
我需要一种方法来测试引用对象是否首先存在。如果没有,请不要调用此retrieveAllReferences方法,但我不知道如何。
我是否认为这一切都错了?引用描述符不允许1:0关系吗? 有没有解决我的问题?
非常感谢您的建议!
答案 0 :(得分:0)
我明白了。以防万一它会帮助其他人,我设置proxy = false。
这对我有用,因为通过将其设置为false,它不会创建临时引用对象,我可以用它测试null。
非常感谢。