栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Hibernate抛出MultipleBagFetchException

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hibernate抛出MultipleBagFetchException

在Hibernate和通常的ORM中,这是一个相当棘手的问题。

发生的情况是,许多(提取)连接导致创建了相当大的笛卡尔积。也就是说,其他任何联接都会在结果中出现新的列和新的行,从而导致(相当大的)“正方形”结果。

Hibernate需要从该表中提取图形,但是它不足以将正确的列与正确的实体进行匹配。

例如

假设我们有结果

A B CA B D

需要成为:

 A | B /C  D

Hibernate可以从主键和一些编码魔术中扣除图形必须是的图形,但是实际上它需要显式的帮助才能实现。

一种实现方法是通过在关系上指定特定于Hibernate

@IndexColumn
或JPA的标准
@OrderColumn

例如

@Entitypublic class Question {    @ManyToMany    @JoinTable(        name = "question_to_answer",        joinColumns = @JoinColumn(name = "question_id"),        inverseJoinColumns = @JoinColumn(name = "answer_id")    )    @IndexColumn(name = "answer_order")    private List<Answer> answers;    // ...}

在此示例中,我使用的是带有额外column的联接表

answer_order
。通过此列(每个Question /
Answer关系具有唯一的序号),Hibernate可以区分结果表中的条目并创建所需的对象图。

顺便说一句,如果它涉及多个实体,那么使用如此多的热切连接可能会导致结果集比您根据所涉及的实体数所想的要大得多。

进一步阅读:

  • hibernate异常-同时获取多个包1
  • hibernate异常-同时获取多个包2
  • 同时解决多个袋子的获取-使用@IndexColumn


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394439.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号