OJB参考描述符1:0的关系?我应该将自动检索设置为false吗?

时间:2010-04-24 00:31:24

标签: java spring orm ojb

在我的网络应用中使用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关系吗? 有没有解决我的问题?

非常感谢您的建议!

1 个答案:

答案 0 :(得分:0)

我明白了。以防万一它会帮助其他人,我设置proxy = false。

这对我有用,因为通过将其设置为false,它不会创建临时引用对象,我可以用它测试null。

非常感谢。