MultipleBagFetchException 尝试接收相关实体

问题描述 投票:0回答:1

我有 3 个实体,彼此相关。用户映射为一对多到宠物,宠物映射为多对多到玩具。

用户.java

@Entity
@Table(name = "my_users")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String surname;

    private Integer age;

    @OneToMany(mappedBy = "user",fetch = FetchType.EAGER)
    private List<Pet> pets;
}

Pet.java

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
public class Pet {

    @Id
    @GeneratedValue
    private Long id;

    private String name;

    private Integer age;

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user;

    @ManyToMany
    @JoinTable(name = "pet_toys",
        joinColumns = {@JoinColumn(name = "pet_id")},
        inverseJoinColumns = {@JoinColumn(name = "toy_id")})
    private List<Toy> toys;
}

玩具.java

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
public class Toy {

    @Id
    @GeneratedValue
    private Long id;

    private String name;

    @ManyToMany(mappedBy = "toys")
    private List<Pet> pets;
}

和存储库UserRepository

    @Override
    @EntityGraph(attributePaths = {"pets","pets.toys"})
    List<User> findAll();
}

当我试图让所有用户及其宠物和宠物玩具收到时,我这样做的原因是因为我想在 1 个 SQL 请求中收到所有数据。

org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags \[.entity.Pet.toys, .entity.User.pets\]
java spring hibernate spring-data-jpa orm
1个回答
0
投票

该异常导致您加载 2 个列表可以包含重复元素。 https://www.baeldung.com/java-hibernate-multiplebagfetchException

© www.soinside.com 2019 - 2024. All rights reserved.