关于这个谷歌搜索可以找到很多东西,但我还没有找到解决这个问题的可行解决方案。
基本上我所拥有的是一个我想要按需加载的特定类的大 CLOB。天真的方法是:
class MyType {
// ...
@Basic(fetch=FetchType.LAZY)
@Lob
public String getBlob() {
return blob;
}
}
但这不起作用,显然是因为我使用的是 oracle 驱动程序,即 Lob 对象不被视为简单句柄,而是始终被加载。或者,我被引导相信我的尝试。有一种解决方案使用特殊仪器进行延迟属性加载,但正如 Hibernate 文档似乎暗示他们对使其正常工作不太感兴趣,所以我宁愿不走那条路。特别是必须运行额外的编译过程和所有。
所以我设想的下一个解决方案是将这个对象分离为另一种类型并定义一个关联。不幸的是,虽然文档提供了相互矛盾的信息,但对我来说很明显延迟加载不适用于具有共享主键的 OneToOne 关联。我将关联的一侧设置为 ManyToOne,但我不太确定当有共享主键时如何执行此操作。
那么任何人都可以提出最好的方法来解决这个问题吗?