我有两个类 Employee 和 Roles。Employee 有很多角色,每个角色都有很多员工。这样我就通过使用另一个表'EMPLOYEE_ROLES'来使用ManyToMany关系。
在员工类中:
@ManyToMany(fetch = FetchType.LAZY,cascade={CascadeType.ALL})
@JoinTable(name="EMPLOYEE_ROLES",joinColumns= {@JoinColumn(name="EC",nullable=false,updatable=false)},inverseJoinColumns={@JoinColumn(name = "ROLE_ID",
nullable = false, updatable = false) })
public Set<Roles> getRolesList() {
return rolesList;
}
和
在角色类中:
@ManyToMany(fetch = FetchType.LAZY,cascade={CascadeType.ALL},mappedBy="rolesList")
public Set<Employee> getEmployees() {
return employees;
}
但是当我获取 Employee 并访问 roleList 时,角色被完美加载,但同时获取 EMPLOYEE_ROLES 表上触发的删除查询。
Employee ec=employeeService.findByEmployeeCode(121);
Iterator<Roles> itr=ec.getRolesList().iterator();
请任何人都可以建议我。如果我使用fetchType.EAGER
它可以完美运行,但是当我使用 LAZY 时,只会出现这个问题:
Hibernate: select roleslist0_.EC as EC11_1_, roleslist0_.ROLE_ID as ROLE2_41_1_, roles1_.ID as ID8_0_, roles1_.DESCRIPTION as DESCRIPT2_8_0_, roles1_.ROLES as ROLES8_0_ from EMPLOYEE_ROLES roleslist0_ inner join ENABLE.ROLES roles1_ on roleslist0_.ROLE_ID=roles1_.ID where roleslist0_.EC=?
Hibernate: delete from EMPLOYEE_ROLES where EC=?