我有一个在多对一元素中声明的域对象的属性。此属性的基本语法如下所示:
<many-to-one name="propertyName" class="propertyClass" fetch="select" not-found="ignore" lazy="proxy" />
现在,我们的想法是让 Hibernate 不急于获取这个属性。它可能为空,因此设置了未找到的忽略。
但是,Hibernate 在加载包含此关联的类时,会在加载父类时自行加载实际类(甚至不是代理)实例。由于某些属性的大小超过 1MB,因此它们占用了大量的堆空间。
但是,如果 not-found 设置为异常(或默认为异常),则具有此属性的父类会加载代理!
如何阻止休眠不加载代理,同时仍然允许此属性为空?
我找到了lazy=no-proxy,但是文档讨论了某种字节码修改,并没有详细说明。有人可以帮我吗?
如果重要的话,它是 Hibernate 的 Java 版本,并且至少是版本 3(如果有帮助,我可以查找实际版本,但现在是 Hibernate 3+)。
我之前没有指定,但是Java版本是1.4。因此,不支持 Java 注释。