Java HibernateProxy.toString惰性初始化异常

Java HibernateProxy.toString惰性初始化异常,java,hibernate,jpa,spring-data-jpa,Java,Hibernate,Jpa,Spring Data Jpa,我在调试POC时遇到了一个奇怪的错误。 我有两个实体: @Getter @塞特 @实体 @表(name=“申请人”) 公共类申请者实现可序列化{ 私有静态最终长serialVersionUID=6060170457948717553L; @身份证 @列(name=“applicator\u id”,insertable=false,nullable=false) 私人长期申请; @列(name=“application\u id”,unique=true) 私有字符串applicationId;

我在调试POC时遇到了一个奇怪的错误。 我有两个实体:

@Getter
@塞特
@实体
@表(name=“申请人”)
公共类申请者实现可序列化{
私有静态最终长serialVersionUID=6060170457948717553L;
@身份证
@列(name=“applicator\u id”,insertable=false,nullable=false)
私人长期申请;
@列(name=“application\u id”,unique=true)
私有字符串applicationId;
@OneToOne(fetch=FetchType.LAZY,可选=false)
@JoinColumn(name=“application\u id”,referencedColumnName=“application\u id”,可插入=
false,可更新=false)
私人应用性应用性;
@Getter
@塞特
@实体
@表(name=“应用”)
公共类ApplicationEntity实现可序列化{
私有静态最终长serialVersionUID=7300036359295729197L;
@身份证
@列(name=“APPLICATION\u ID”)
私有字符串id;
@OneToOne(mappedBy=“applicationEntity”,fetch=FetchType.LAZY)
私人申请人;
这些类具有从Crudepository扩展而来的repositories接口,并且在
申请人
存储库中,我有一个自定义方法来获取具有applicationId的实体:
申请人findbyaapplicationid(字符串applicationId);
但是,在调试时,我在intellij debuguer的
applicationEntity
属性上看到以下消息:

方法引发了“org.hibernate.LazyInitializationException”异常。无法计算org.example.postgres.jpa.model.ApplicationEntity$HibernateProxy$qa4PKx8V.toString()

每次执行新测试时,值
qa4PKx8V
都会更改

我在
@Join
注释中尝试了很多组合,我删除了lombook注释,我也使用了
@Transactional
注释,但总是相同的错误

需要注意的一个关键点是,我可以从表中获取任何错误的数据,我只是在调试器中看到这条消息,所以我的问题是,这是intellij之类的东西?或者我需要通过配置或更改代码中的某些内容来修复这一点


谢谢。

我假设您有一个自动生成的
toString()
实现

通常,应该避免在
toString()
equals()
hashCode()中引用延迟加载的属性
等。如果不这样做,将导致出现类似于您所面临的意外情况的
LazyInitializationException
,当上述方法试图访问活动事务上下文之外的惰性属性时,就会触发这些意外情况


(这确实是“intellij的一件事”,因为尽管调试的代码可能被事务包围,intellij检查器在单独的线程上计算表达式,其中没有事务处于活动状态=没有打开的持久性上下文。此外,它只会在
@XxxToOne(可选=false)
属性时发生)

首先将
FetchType.LAZY
更改为
FetchType.EAGER
在这两个实体中,再次检查您是否遗漏了存储库类中的
@Repository
注释。@Seldo97您是认真建议OP更改
EAGER/LAZY
获取配置,以及所有潜在的性能影响,以便修复
toString()
?这是一个正确的答案,尤其是与IntelliJ调试器相关的第二部分。