菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
488
0

springboot hikari连接池org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.example.demo.model.Article.modifyRecords, could not initialize proxy - no Session

原创
05/13 14:22
阅读数 34887

刚从springmvc换到springboot,又遇到这个经典的问题

翻了半天帖子,很多傻逼的解决办法就是改为急加载

哦,好办法,头疼就把头砍了去呗,反正也不知道当初设置为懒加载是什么原因,也不关心急加载会有什么影响,这能是解决问题的态度吗

我又看了另外一些人的解决办法

在数据源处配置一下

spring.jpa.properties.hibernate.enable_lazy_load_no_trans =true

暂不清楚负面作用是什么,抽时间可以测一下,是不是破坏了连接池规则之类的

知道的朋友可以留言

第一条语句

 

select article0_.id as id1_0_0_, article0_.article_body_id as article_6_0_0_, article0_.body as body2_0_0_, article0_.publish_dt as publish_3_0_0_, article0_.title as title4_0_0_, article0_.writer as writer5_0_0_, articlebod1_.id as id1_1_1_, articlebod1_.body as body2_1_1_ from article article0_ left outer join article_body articlebod1_ on article0_.article_body_id=articlebod1_.id where article0_.id=? 

  

第二条语句

select modifyreco0_.article_id as article_3_2_0_, modifyreco0_.id as id1_2_0_, modifyreco0_.id as id1_2_1_, modifyreco0_.publish_dt as publish_2_2_1_ from modify_record modifyreco0_ where modifyreco0_.article_id=? order by modifyreco0_.id asc

 

 

 第三条语句(保存指令)

select article0_.id as id1_0_2_, article0_.article_body_id as article_6_0_2_, article0_.body as body2_0_2_, article0_.publish_dt as publish_3_0_2_, article0_.title as title4_0_2_, article0_.writer as writer5_0_2_, articlebod1_.id as id1_1_0_, articlebod1_.body as body2_1_0_, modifyreco2_.article_id as article_3_2_4_, modifyreco2_.id as id1_2_4_, modifyreco2_.id as id1_2_1_, modifyreco2_.publish_dt as publish_2_2_1_ from article article0_ left outer join article_body articlebod1_ on article0_.article_body_id=articlebod1_.id left outer join modify_record modifyreco2_ on article0_.id=modifyreco2_.article_id where article0_.id=? order by modifyreco2_.id asc 

insert into modify_record (publish_dt) values (?) 

update article set article_body_id=?, body=?, publish_dt=?, title=?, writer=? where id=?

update modify_record set article_id=? where id=? 

 

如果用急加载

只发出了一条查询

select article0_.id as id1_0_0_, article0_.article_body_id as article_6_0_0_, article0_.body as body2_0_0_, article0_.publish_dt as publish_3_0_0_, article0_.title as title4_0_0_, article0_.writer as writer5_0_0_, articlebod1_.id as id1_1_1_, articlebod1_.body as body2_1_1_, modifyreco2_.article_id as article_3_2_2_, modifyreco2_.id as id1_2_2_, modifyreco2_.id as id1_2_3_, modifyreco2_.publish_dt as publish_2_2_3_ from article article0_ left outer join article_body articlebod1_ on article0_.article_body_id=articlebod1_.id left outer join modify_record modifyreco2_ on article0_.id=modifyreco2_.article_id where article0_.id=? order by modifyreco2_.id asc

 

 

然后这一句就不会在发出查询请求了,毕竟刚才已经查出来了

 

 

然后保存的时候

select article0_.id as id1_0_2_, article0_.article_body_id as article_6_0_2_, article0_.body as body2_0_2_, article0_.publish_dt as publish_3_0_2_, article0_.title as title4_0_2_, article0_.writer as writer5_0_2_, articlebod1_.id as id1_1_0_, articlebod1_.body as body2_1_0_, modifyreco2_.article_id as article_3_2_4_, modifyreco2_.id as id1_2_4_, modifyreco2_.id as id1_2_1_, modifyreco2_.publish_dt as publish_2_2_1_ from article article0_ left outer join article_body articlebod1_ on article0_.article_body_id=articlebod1_.id left outer join modify_record modifyreco2_ on article0_.id=modifyreco2_.article_id where article0_.id=? order by modifyreco2_.id asc

insert into modify_record (publish_dt) values (?)
update article set article_body_id=?, body=?, publish_dt=?, title=?, writer=? where id=?
update modify_record set article_id=? where id=?

 

四条语句

 

所以看起来

发表评论

0/200
488 点赞
0 评论
收藏
为你推荐 换一批