我有一個2實體classes.Employee和賬戶異常而從JPA讀取數據 - org.hibernate.LazyInitializationException
@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;
}
我能夠將數據保存到數據庫,但在員工行的檢索我得到「 方法拋出'org.hibernate.LazyInitializationException'異常。無法評估Employee.toString()「和員工對象(帳戶)中的集合我看到」無法評估表達式方法拋出org.hibernate.LazyInitializationException異常。「
我嘗試過使用FetchType.EAGER for OnetoMany,但沒有運氣。不知道是否它的lombok @Data(toString())導致問題。
PS:我使用JPA CrudRepository來保存和檢索數據庫中的數據。
請大家幫忙。
一個問題是你有toString的循環依賴關係,如果它試圖通過打印它們來記錄檢索到的對象,可能會導致問題。如果你在賬戶中調用toString,它會在它自己的員工上調用toString,它將在包含它的所有賬戶上調用toString,這些賬戶將再次調用toString,循環這樣循環直到內存耗盡。另外,你可以提供堆棧跟蹤嗎? – mnewton