1

在我的 Web 应用程序中使用带有 Spring 2的Apache OJB时遇到问题。

我正在使用具有 2 个外键属性的 OJB 引用描述符。我有一个对象 A(父)和对象 B(引用对象)。问题是,对于对象 A,可能存在对象 B,也可能不存在对象 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

并且在调试器中创建objectB时出现此异常:

com.sun.jdi.InvocationException occurred invoking method.

我猜测引用描述符必须是 1:1+ 的关系,而不是 1:0+ 的关系。我想知道是否应该将属性“自动检索”设置为 false,然后使用 PersistenceBroker.retrieveAllReferences(Object obj); 按照指示的方法。然而,这个方法的返回值是'void',所以我猜测Spring会以某种方式创建并为我设置参考类。(让我回到我遇到的同样问题。)

我需要一种方法来首先测试引用对象是否存在。如果没有,请不要调用此retrieveAllReferences 方法,但我不知道如何。

我对这一切都错了吗?引用描述符是否不允许 1:0 关系?有什么办法可以解决我的问题吗?

非常感谢您的建议!

4

1 回答 1

0

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

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

不管怎么说,多谢拉。

于 2010-04-26T22:59:25.433 回答