从JPA读取数据时出现异常-org.hibernate.LazyInitializationException

从JPA读取数据时出现异常-org.hibernate.LazyInitializationException,hibernate,jpa,spring-boot,lombok,Hibernate,Jpa,Spring Boot,Lombok,我有两个实体类。员工和账户 @Data @NoArgsConstructor @AllArgsConstructor @Entity @DynamicUpdate @DynamicInsert @Table(name = "employee", schema = "org") public class Employee { @Id @Column(name = "emp_id") private String empId; @Column(name = "emp_name") private

我有两个实体类。员工和账户

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@DynamicUpdate
@DynamicInsert
@Table(name = "employee", schema = "org")
public class Employee {
@Id
@Column(name = "emp_id")
private String empId;

@Column(name = "emp_name")
private String empName;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "employee")
private Set<Account> accounts;
}

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@DynamicUpdate
@DynamicInsert
@Table(name = "account", schema = "org")
public class Account {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "acct_id")
private Integer accountId;

@Column(name = "acct_nbr")
private String accountNumber;

@ManyToOne
@JoinColumn(name = "emp_id", nullable = false)
private Employee employee;
}
@数据
@诺尔格构装师
@AllArgsConstructor
@实体
@动态铜日期
@动态服务器
@表(name=“employee”,schema=“org”)
公营雇员{
@身份证
@列(name=“emp\u id”)
私有字符串empId;
@列(name=“emp_name”)
私有字符串名称;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“employee”)
私人账户;
}
@资料
@诺尔格构装师
@AllArgsConstructor
@实体
@动态铜日期
@动态服务器
@表(name=“account”,schema=“org”)
公共类帐户{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“账户id”)
私有整数accountId;
@列(name=“acct\u nbr”)
私有字符串accountNumber;
@许多酮
@JoinColumn(name=“emp_id”,nullable=false)
私人雇员;
}
我能够将数据保存到数据库中,但是在检索员工行时,我会得到“方法抛出'org.hibernate.LazyInitializationException'异常。无法计算employee.toString()”以及我看到的员工对象(帐户)中的集合“无法计算表达式方法引发的org.hibernate.LazyInitializationException”异常。

我尝试过FetchType.eagent for OnetoMany,但是运气不好。不确定是否是lombok@Data(toString())导致了问题

PS:我使用JPA Crudepository来保存和检索数据库中的数据


请提供帮助。

您可能需要为员工添加以下注释:

@ToString(exclude="accounts")
另外,我认为您需要根据两个实体的id添加基本相等:

@EqualsAndHashCode(of="emp_id")
以及类似于
Account


披露:我是lombok开发人员。

您可能需要在
员工中添加以下注释:

@ToString(exclude="accounts")
另外,我认为您需要根据两个实体的id添加基本相等:

@EqualsAndHashCode(of="emp_id")
以及类似于
Account


披露:我是一名lombok开发者。

一个问题是,您对toString有循环依赖关系,如果它试图通过打印来记录检索到的对象,这可能会导致问题。如果您以帐户形式调用toString,它将调用其所属员工的toString,该员工将调用包含它的所有帐户上的toString,该帐户将再次调用toStringtoString本身,像这样循环直到内存耗尽。另外,你能提供堆栈跟踪吗?一个问题是,你对toString有循环依赖关系,如果它试图通过打印来记录检索到的对象,这可能会导致问题。如果你在帐户上调用toString,它将在其拥有的员工上调用toString,该员工将调用toString在所有包含它的帐户上,它将再次在自身上调用toString,像这样循环,直到它耗尽内存。此外,您可以提供堆栈跟踪吗?上面建议的更改不成功:(.上面建议的更改不成功:)。