Java 为什么在我的多通关联中看不到hibernate代理对象?

Java 为什么在我的多通关联中看不到hibernate代理对象?,java,hibernate,jpa,proxy,hibernate-mapping,Java,Hibernate,Jpa,Proxy,Hibernate Mapping,根据hibernate,默认情况下,我的@ManyToOne关系应该有代理对象。但是,当我在Eclipse调试器(“Variables”视图)中查看扩展对象时,字段变量似乎是entity类中定义的基本类型的实例。此外,当我使用hibernate.show\u sql=true调用session.get(type,id)时,我可以看到对象上定义的所有@manytone关系的左外部联接 Hibernate是否需要为这些关系创建代理类/对象?也许是字节码增强 引自hibernate文档: 集合的延迟抓

根据hibernate,默认情况下,我的
@ManyToOne
关系应该有代理对象。但是,当我在Eclipse调试器(“Variables”视图)中查看扩展对象时,字段变量似乎是entity类中定义的基本类型的实例。此外,当我使用
hibernate.show\u sql=true
调用
session.get(type,id)
时,我可以看到对象上定义的所有
@manytone
关系的
左外部联接

Hibernate是否需要为这些关系创建代理类/对象?也许是字节码增强

引自hibernate文档:

集合的延迟抓取是使用Hibernate自己的 持久集合的实现。然而,一个不同的 单端关联中的惰性行为需要一种机制。 必须代理关联的目标实体。冬眠 使用为持久对象实现延迟初始化代理 通过字节码访问的运行时字节码增强 提供者

在启动时,Hibernate会默认为所有持久化服务器生成代理 类,并使用它们启用多对一和 一对一的联系


所有的
@ManyToOne
@OneToOne
关联都是关联的,这就是为什么在获取根实体时会将它们连接起来

仅当关联未初始化时才使用代理。要使关联变为惰性,只需添加LAZY fetch属性:

@ManyToOne(fetch = FetchType.LAZY)

结社lazy@JBNizet-谢谢,我该怎么做?还有,为什么文件说默认情况下会发生这种情况呢?谢谢弗拉德,只有一个问题:什么时候协会不会被初始化(并因此成为代理)?在我看来,根据文档(更新的问题加上引号),默认情况下,所有多对一关联都应该是代理-尽管我一定是误解了什么..文档很清楚。对于x-to-one关联,如果关联是惰性的,则使用代理。该代理是使用。