Java 当使用Hibernate Lazy Fetchtype时,如何加载一组对象?
我有一个Hibernate域类(比如PetOwner),它与另一个类(Pets)有一对多的关系 [宠物主人(1)---(*)宠物] 由于需要进行剧烈的更改以提高性能,我不得不更改 PetOwner类中的getPets()方法是惰性的 因此,当前映射如下所示Java 当使用Hibernate Lazy Fetchtype时,如何加载一组对象?,java,database,hibernate,Java,Database,Hibernate,我有一个Hibernate域类(比如PetOwner),它与另一个类(Pets)有一对多的关系 [宠物主人(1)---(*)宠物] 由于需要进行剧烈的更改以提高性能,我不得不更改 PetOwner类中的getPets()方法是惰性的 因此,当前映射如下所示 @OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY, mappedBy = "petowner") public Set<Pet> getPets() {
@OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY, mappedBy = "petowner")
public Set<Pet> getPets() {
if (pets == null) {
pets = new HashSet<Pet>();
}
return pets;
}
必须使用petOwner.getPets().size(),因为在完成列表上的某些操作之前,不会加载宠物。
当我使用新方法时,LazyInitializationException可以被克服。但这是一个黑客,我正在寻找一种方法
做得更整洁些。有什么建议吗 尝试使用初始化对象。它应该解析集合引用
我很好奇,为什么您希望“急切”获取,而不将获取类型设置为急切
public PetOwner retrievePetOwnerByIdWithPets(Long petOwnerId) {
PetOwner petOwner = retrievePetOwnerById(petOwnerId);
int size = petOwner.getPets().size();
return petOwner;
}