处理Lazy Loaded的EJB JPA实体的JAX-WS代理对象的最佳方法是什么?

时间:2013-03-15 15:00:26

标签: java web-services jpa ejb jax-ws

不幸的是,我们不得不使用JPA 1.0和Java EE 5(SAP实现)。如果重要,我们正在使用Oracle DB。

我们有一个实体类,它基本上是文件类型对象的数据库描述,包含名称,文件类型和byte [](blob)项。

当在表上调用查找时,我们不希望每次都急切地加载blob对象,并通过Web服务返回它,但是我们仍然想要加载文件名和类型字段。

现在,我们尝试了几件事: -

首先,我们尝试了@Basic(fetch= FetchType.LAZY)。无论如何,这似乎没有做任何事情。 (可能这不是强制执行的JPA协议)

其次,我们尝试在单独的表中与字节数据建立一对一的关系,并将其设置为延迟提取类型。执行此操作时,这是在Web服务中发生异常时,因为此项的Jax WS代理对象非常空。

第三,我们已经尝试过急切地加载整个“文件”表,但之后只是在数据库查询后消隐了byte []数据;这不会通过Web服务返回大字节数据,但它并不理想,因为字节数据仍然从数据中检索到程序“上下文”中。

如果代理对象为空,有没有办法告诉Jax WS忽略特定字段?我似乎无法在文档中找到任何内容吗?

1 个答案:

答案 0 :(得分:1)

为什么不创建一个单独的jax-ws类型,如“FileMetadata”,它只包含名称和类型字段?