2017-05-28 79 views
0

当一个人试图热切负载两袋以下异常被抛出休眠:为什么加载两个袋子会生成笛卡尔产品?

org.hibernate.loader.MultipleBagFetchException:不能同时 获取多袋

Acording以下职位:

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

Hibernate cannot simultaneously fetch multiple bags

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

而且这两篇文章都推荐使用集合而不是非索引列表(袋)。

我的问题是:

为什么尝试加载两袋将产生笛卡尔积,并使用套就没有呢?

回答

0

在这两种情况下都会生成笛卡尔产品 - 用于包装和套装。使用什么并不重要。

含义本声明:

休眠不允许取一个以上的包,因为这将产生一个笛卡尔乘积。

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