OneToOne Lazy Loading Invalid Reason Research
来源:互联网 发布:网络教育怎么报名时间 编辑:程序博客网 时间:2024/04/27 17:26
双向一对一关系,只有通过mappedBy指定关系控制方,才会出现懒加载失效的问题。
@Entitypublic class FBO { @OneToOne(fetch = FetchType.LAZY, mappedBy = "fbo") OBF obf; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Access(value = AccessType.PROPERTY) private Long id; public OBF getObf() { return obf; } public void setObf(OBF obf) { this.obf = obf; } public Long getId() { return id; } public void setId(Long id) { this.id = id; }}
@Entitypublic class OBF { @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "fbo_id") FBO fbo; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Access(value = AccessType.PROPERTY) private Long id; public FBO getFbo() { return fbo; } public void setFbo(FBO fbo) { this.fbo = fbo; } public Long getId() { return id; } public void setId(Long id) { this.id = id; }}
OBF是关系持有方。存储fbo_id. FBO表中无obf_id.
FBO fbo = fboRepository.findOne(1L);
发出两条语句 一条查询fbo 另一条查询obf
Hibernate: select fbo0_.id as id1_2_0_ from fbo fbo0_ where fbo0_.id=?
Hibernate: select obf0_.id as id1_3_0_, obf0_.fbo_id as fbo_id2_3_0_ from obf obf0_ where obf0_.fbo_id=?
OBF obf = obfRepository.findOne(1L);
仅发出一条SQL,用来查询OBF
Hibernate: select obf0_.id as id1_3_0_, obf0_.fbo_id as fbo_id2_3_0_ from obf obf0_ where obf0_.id=?
因为对于FBO而言没有obf_id,不通过查询,hibernate就无法判断是否在库中存在该对应记录。
这里不可以将FBO内的OBF设置一个HibernateProxy,因为如果FBO确实没有关联OBF,hibernate理论上应该return null
所以针对这种一对一的关系被持有方,hibernate在查询时,会提前将对应数据查询,而使得懒加载无效
阅读全文
0 0
- OneToOne Lazy Loading Invalid Reason Research
- Bidirectional OneToOne association lazy loading support
- lazy loading
- lazy loading
- hibernate 双向 OneToOne fetchType lazy 问题
- Lazy Loading Asyncronous Javascript
- javascript的lazy loading
- C# Lazy Loading
- Lazy Loading In AngularJS
- Lazy Loading Singletons|Classloader
- MyBatis Lazy Loading
- Lazy Loading In AngularJS
- iOS swift lazy loading
- jquery lazy loading
- Vue Lazy Loading Routes
- ActiveRecord, Lazy and Eager Loading
- lazy loading(延迟加载)
- onetoone
- HDU2032 杨辉三角
- 树、森林与二叉树的转换
- Android.mk 文件语法解释(全)
- 任务3:鼠标获取任意ROI区域
- 对空包进行签名
- OneToOne Lazy Loading Invalid Reason Research
- Unity3D利用Photon实现实时联网对战(二)PUN SDK介绍
- 线程通信几个关键字说明(wait()/notify()/sleep()/notifyAll())
- Android View api 详解-LocationInWindow,getLocationOnScreen,getGlobalVisibleRect,getLocalVisibleRect
- 数据库事务隔离级别
- 原生JS判断页面中图片加载完成
- 文字超过div用省略号
- 用composer搭建php框架(一)--安装composer
- 科沃斯随心:最会拖地的扫地机器人