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

访问关联实体的ID时Hibernate生成SQL查询

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

访问关联实体的ID时Hibernate生成SQL查询

据我了解,该调用不应往返于数据库,因为Id存储在EntityA表中,并且代理应仅返回该值。

使用 属性访问类型 。您遇到的行为是字段访问类型的“限制”。这是Emmanuel Bernard的解释:

那是不幸的,但可以预料的。这是字段级别访问的限制之一。基本上,我们没有办法知道getId()实际上只能访问id字段。因此,为了安全起见,我们需要加载整个对象。

因此,将代码更改为:

@Entitypublic class EntityA {    private EntityB parent;    @ManyToOne(fetch = FetchType.LAZY)    @JoinColumn(name = "parent_id")    public EntityB getParent() {        return parent;     }    ...}@MappedSuperclasspublic class SuperEntity {    private long itemId;    @Id    @GeneratedValue(strategy = GenerationType.AUTO)    @Column(name = "id")    public long getItemId() {         return itemId;    }    ...}

参考文献

  • 在字段上使用注释时,在getId-call上加载的代理
  • proxy getId =>为什么生成sql!
  • HHH-3718(如果可以解决此问题)


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

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

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