请任何人帮我找到解决这个问题的方法.
似乎在Hibernate中,当有多个集合时,@ OneToMany注释存在问题.
当我尝试这样做时,它会给出这个异常引起的:org.hibernate.loader.MultipleBagFetchException:无法同时获取多个行李.
这是我的实体类:
@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中获取超过OnetoMany注释的集合是不可能的?
提前致谢.
最佳答案 Hibernate已经告诉你问题是什么了.
你不能一次性获取超过1“多”的集合.这是因为集合被加入到Hibernate内部使用的查询中.
在此加入多个集合将需要查询“笛卡尔积”结果集,获取N * M行 – 当仅需要N M 1时效率非常低. (N代表球员,M代表球门或其他).
选择一个你想要的集合EAGER&把它关掉另一个.下次,请尝试阅读错误消息.