有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

@OneToMany注释导致的java异常

请任何人帮我找到解决这个问题的办法
在Hibernate中,当有多个集合要进行fect时,@OneToMany注释似乎存在问题
当我尝试这样做时,它给出了这个异常Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
这是我的实体类:

@Entity
@Table(name = "game", catalog = "competition_manager")
public class Game implements java.io.Serializable {
    private List<GamePlayerGoals> gamePlayerGoalses = new ArrayList<GamePlayerGoals>(0);
    private List<GamePlayer> gamePlayers = new ArrayList<GamePlayer>(0);

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "game")
    public List<GamePlayerGoals> getGamePlayerGoalses() {
        return this.gamePlayerGoalses;
    }

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "game")
    public List<GamePlayer> getGamePlayers() {
        return this.gamePlayers;
    }
}

但我的问题是:在Hibernate中获取超过一个带注释的集合是不可能的吗? 提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    Hibernate已经告诉了您问题所在

    您不能一次获取超过1个“多”集合。这是因为集合被加入到Hibernate内部使用的查询中

    在这个集合中加入多个集合将需要查询“笛卡尔乘积”结果集,当只需要N+M+1时,获取N*M行的效率非常低。(N代表球员,M代表进球或其他)

    选择一个你想要的收藏&;另一个关掉。下一次,请尝试阅读错误消息