我有2个实体类。员工和帐户
@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来保存和检索数据库中的数据。
请帮忙。
答案 0 :(得分:1)
您可能需要将以下注释添加到Employee
:
@ToString(exclude="accounts")
另外,我认为你想根据他们的id添加两个实体的基础:
@EqualsAndHashCode(of="emp_id")
类似于Account
披露:我是一名lombok开发者。