首页新闻找找看学习计划

[Hibernate-二级缓存]用findOne查询实体,实体不为null但里面的字段全为null

0
悬赏园豆:5 [待解决问题]

遇到这样情况..这个实体A是配了二级缓存@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)

在一个有事务的方法里面查询了B实体,B是关联了A的...用B.getA()取到A,然后再A.getId().

然后把A的id传到另一个方法里面调用了A的Dao.findOne(id)...查出来的实体A不为空(A!=null)

但是用findOne查出的A里面的所有字段都为null...

把@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)去掉就正常了,

但是想不明白怎么回事,还望老司机传授经验...

么么虎的主页 么么虎 | 初学一级 | 园豆:199
提问于:2016-10-14 16:42
< >
分享
所有回答(1)
0

去掉二级缓存,就正常 --> A 本来就在二级缓存里,且其所有字段都为 null。

所有字段全是 null --> 可能是因为懒加载的原因,load 得到的代理对象的字段除了 id,其他字段全为 null,被存进二级缓存,因为二级缓存的 key 就是实体对象的 id;或者,本来数据库里面对应的记录的全部字段都为 null;

不保证答案的正确,我极少用 load 和 二级缓存,希望答案对你有用。

 

 

bobo2018 | 园豆:135 (初学一级) | 2016-10-15 14:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册