解决Hibernate 注解在属性上 ,多对一,一对一懒加载 当调用one那一方getId 也会查数据库的问题
来源:互联网 发布:影子网络真的很恐怖吗 编辑:程序博客网 时间:2024/05/01 15:05
使用 hibernate5.0 版本 spring boot jpa 搭建测试
首先这个问题出现的原因是把注解写在了属性上并且fetchType=lazy,写在属性上找起来方便,但是也带了一个问题,就是在getOne那一方的id的时候会查询数据库,这是我们不希望的,我们可能更想要的是在调用类似getName的方法时候查询数据库。
出现这种情况的原因是hibernate并不能找到getIdentifierMethod ,如下图
如果在产生个这个代理类的时候就知道这个getIdentifierMethod那么getId的时候就不会去查数据库,接下来看PojoEntityTuplizer的buildProxyFactory方法
Getter是一个接口 如果我们注解放到属性上会使用GetterFieldImpl的实现,结果默认返回null
所有我们只要在这里设置getIdentifierMethod就可以,在classPath面覆盖掉这个类就可以了,实现getMethod方法
这样的话getId就不会去查询数据库了
您可以放心修改 因为GetterFieldImpl是*.spi下的类 spi下的就是让扩展的
下载源码后 直接修改数据库连接 application.yml
运行 test包下的 HibernateApplicationTests 的save和query方法即可 然后看看sql的打印情况
阅读全文
1 0
- 解决Hibernate 注解在属性上 ,多对一,一对一懒加载 当调用one那一方getId 也会查数据库的问题
- hibernate 一对一、多对一 双向关联的问题——只能在多的一方添加、修改数据,不能在多的一方修改添加
- hibernate 多对一关联 从多的一方取不到一的一方
- hibernate 多对一 查询 多的一方如何分页?
- Hibernate的关联关系注解映射(一对一、一对多、多对一、多对多、自连接)
- 【SSH三大框架】Hibernate基础第十二篇:load()懒加载分析以及一对一、一对多、多对一、多对多懒加载的分析
- Hibernate使用property-ref属性解决遗留数据库One To Many关系的问题。
- Hibernate使用property-ref属性解决遗留数据库One To Many关系的问题。
- hibernate学习一对一,一对多,多对一,多对多,注解版和XML版
- 数据库一对一,多对一,多对多的关系
- hibernate关联关系注解(一对多、多对一、一对一)
- hibernate关联映射:多对一、一对一
- Hibernate 一对一的关系(one-to-one)
- hibernate annotation many-to-one cascade 没用(Hibernate 注解 多对一 级联 没用)
- hibernate一对一懒加载
- hibernate(九)注解方式的多表操作一对一和多对多
- Hibernate一对一,一对多懒加载的要求
- Hibernate一对一,一对多懒加载的要求
- haoi2013软件安装解题报告
- Over子句开窗函数
- java笔记(七)ServerSocket跟Socket
- 小试牛刀
- Devexpress:在GridControl中使用BindingList
- 解决Hibernate 注解在属性上 ,多对一,一对一懒加载 当调用one那一方getId 也会查数据库的问题
- linux下搭建git服务器全过程
- javascript深入理解js闭包
- WebRTC中RTP/RTCP协议实现分析
- 变态跳台阶java实现
- DBSCAN(基于高密度聚类的)算法
- 不同游戏类型的差异化特性
- 微信小程序-左滑删除效果
- eclipse+maven新建项目index.jsp页面报错