出于某些测试目的,我试图让 JUnit 测试抛出 LazyInitializationException。
我的情况是我有 3 个实体
@Entity(name = "Role")
public class Role {
@LazyCollection(LazyCollectionOption.TRUE)
@ManyToMany(mappedBy = "roles", fetch=FetchType.LAZY)
private Set<AppUser> appUsers;
...
}
@Entity(name = "Group")
public class Group {
@LazyCollection(LazyCollectionOption.TRUE)
@ManyToMany(mappedBy = "groups", fetch=FetchType.LAZY)
private Set<AppUser> appUsers;
...
}
@Entity(name = "AppUser")
public class AppUser {
@LazyCollection(LazyCollectionOption.TRUE)
@ManyToMany(fetch= FetchType.LAZY)
@JoinTable(name = "APPUSER_ROLE", joinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "ID"), inverseJoinColumns = @JoinColumn(name = "ROLE_ID", referencedColumnName = "ID"))
private Set<Role> roles;
...
@LazyCollection(LazyCollectionOption.TRUE)
@ManyToMany(fetch= FetchType.LAZY)
@JoinTable(name = "APPUSER_GROUP", joinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "ID"), inverseJoinColumns = @JoinColumn(name = "GROUP_ID", referencedColumnName = "ID"))
private Set<Group> groups;
...
}
我生成了一些测试数据,其中所有这 3 个数据都与关系正确地保存在数据库中。然后我提交交易。
但随后我尝试使用相同的测试方法读取Role
(基于 id),但我也读取了所有其他相关实体(似乎急切地加载)。为什么会这样?我怎么来LazyInitializationException
?
编辑:好的,我对一般描述不感兴趣,而是需要一个代码示例,因为我无法在我的情况下启动它。一般描述并不能解决我的问题。