Hibernate:为什么加载两个袋会生成笛卡尔积?

时间:2017-05-28 04:38:45

标签: java hibernate jpa

当一个人试图急切地加载两个行李时,会抛出以下异常

  

org.hibernate.loader.MultipleBagFetchException:无法同时进行   拿多个包

根据以下帖子:

org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags

Hibernate cannot simultaneously fetch multiple bags

  

Hibernate不允许获取多个包,因为这会生成笛卡尔积。

这两个帖子都建议使用集合而不是非索引列表(行李)。

我的问题是:

为什么尝试加载两个袋子会生成笛卡尔积并且使用套装不会?

1 个答案:

答案 0 :(得分:0)

在这两种情况下都会产生笛卡尔积 - 袋子和套装。使用什么并不重要。

本声明的含义:

  

Hibernate不允许获取多个包,因为这会生成笛卡尔积。

Hibernate可以使用集合处理笛卡尔积的结果,但不能使用行李。你可以在这里参考一个例子: Hibernate Exception - Simultaneously Fetch Multiple Bags