Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当使用Hibernate Lazy Fetchtype时,如何加载一组对象?_Java_Database_Hibernate - Fatal编程技术网

Java 当使用Hibernate Lazy Fetchtype时,如何加载一组对象?

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() {

我有一个Hibernate域类(比如PetOwner),它与另一个类(Pets)有一对多的关系

[宠物主人(1)---(*)宠物]

由于需要进行剧烈的更改以提高性能,我不得不更改 PetOwner类中的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;
    }