JCache只缓存部分字段
项目中使用的JCache缓存实体,发现每次缓存时存进去了实体,取出的时候字段有些是空的。
具体环境为
Springboot v2.01
JCache(ehcache 3.4.0)
jdk 1.8.0_201
maven 3.6.0
最开始以为是取的时候无法取出父类的字段(实体继承了一个父类,空的字段都是父类的字段,所以定位到取的问题)。
@MappedSuperclass @Data //@Entity public class AlertRuleSuperBean { /** * 报警规则主键 */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "alert_rule_id") protected Integer alertRuleId; }
决定手动赋值
@Service @EnableCaching public class CacheServiceImpl implements CacheService { @Override @Cacheable(key = "#key",cacheNames = "dtuRule") public AlertRuleProjectBean doDtuRule(String key, AlertRuleProjectBean bean) { System.out.println("I am a doDtuRule!key is "+ key); //只缓存子类bug,所以手动赋值 AlertRuleProjectBean resultBean=new AlertRuleProjectBean(); resultBean.setDtuEventTimestamp(bean.getDtuEventTimestamp()); resultBean.setProjectId(bean.getProjectId()); resultBean.setAlertRuleMax(bean.getAlertRuleMax()); resultBean.setAlertRule(bean.getAlertRule()); resultBean.setAlertRuleStatus(bean.getAlertRuleStatus()); resultBean.setAlertRuleMin(bean.getAlertRuleMin()); resultBean.setDtu_data_id(bean.getDtu_data_id()); resultBean.setAlertConditionType(bean.getAlertConditionType()); resultBean.setAlertPriority(bean.getAlertPriority()); resultBean.setAlertRuleId(bean.getAlertRuleId()); resultBean.setAlertRuleName(bean.getAlertRuleName()); resultBean.setSmoothTime(bean.getSmoothTime()); resultBean.setAlertType(bean.getAlertType()); resultBean.setIsProjectUserVisual(bean.getIsProjectUserVisual()); resultBean.setRuleStatus(bean.getRuleStatus()); resultBean.setTimestamp(bean.getTimestamp()); return resultBean; } @Override @CacheEvict(key="#key",condition = "#key!='mfb'",cacheNames = "dtuRule",allEntries = false) public void removeDtuRule(String key) { System.out.println("cache removed!key is "+key); } }
赋值后仍然是部分为空,完全没有效果!
试着取消继承(将继承的一些父类字段手动copy到子类,取消extend),问题解决!
JCache只缓存部分字段的更多相关文章
- http缓存策略-nginx只缓存js和css不缓存html
使用缓存,是提升web性能最重要的方式之一. 在开发单页面应用的时候,大量的单静态资源引用都是依赖于html这个文件的.例如: <!doctype html> <html lang= ...
- Newtonsoft.Json 序列化 排除指定字段或只序列化指定字段
using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using System; using System.Collections.G ...
- Mybatis-Plus中使用max、sum聚合函数、只查询指定字段、查询语句多个OR处理
聚合函数查询 可以使用以下方法 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select(" I ...
- EF 只更新部分字段
/// 只更新storedAddress数据中的DefaultAddress字段,更新为false /// 将默认地址改为不是默认地址 /// </summary> /// <par ...
- jsp隐藏关键 敏感信息,只显示前后字段
今天写jsp页面,要求对字段中间部分隐藏,只显示前几位和后几位.搜了一下发现网上大都是隐藏前面指定字段,或者是利用正则表达式隐藏手机号或是身份证.这样的话必须预先知道字段长度,而我不想知道长度只显示前 ...
- 如何 distinct 只对一个字段有用,同时查出其他字段
转至:http://blog.csdn.net/u013402772/article/details/51262524 在使用MySQL时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有d ...
- hibernate update 只更新部分字段的3种方法(转载)
hibernate 中如果直接使用 Session.update(Object o); 会把这个表中的所有字段更新一遍. 比如: public class Teacher Test { @Test p ...
- hibernate update 只更新部分字段的3种方法(其实我只想说第二种)
hibernate 中如果直接使用Session.update(Object o);会把这个表中的所有字段更新一遍. 比如: public class Teacher Test { @Test pub ...
- Laravel 在 with 查询中只查询个别字段
在使用 Laravel 的关联查询中,我们经常使用 with 方法来避免 N+1 查询,但是 with 会将目标关联的所有字段全部查询出来,对于有强迫症的我们来说,当然是不允许的. 这时候我们可以使用 ...
随机推荐
- ASP.Net Core "The type initializer for 'Gdip' threw an exception"
ASP.NET Core项目部署在Linux下可能会出现GDI错误 The type initializer for 'Gdip' threw an exception 解决方案:创建 libdl 的 ...
- Java 动态打印菱形代码之for循环的使用
1.自定义空心菱形 void PrintRhombus() { int i, j; int s = 4; for (i = 1; i < 2 * (s + 1); i++) { if (i &l ...
- linux 查看CPU、内存、磁盘信息命令
[1]查看CPU信息 (1)查看CPU信息(型号) cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c (2)查看物理CPU个数 cat /pr ...
- Makefile 编译时虽然加上了-g 选项 但是还是无法调试
make 编译时默认的命令是all,不能写成其他的
- 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165215
2018-2019-2 <网络对抗技术>Exp0 Kali安装 Week1 20165215 目录 Kali的下载及安装 网络配置 设置共享文件夹及剪切板 更新软件源 [Kali的下载及安 ...
- 第三方jar包上传私服和项目使用
下面只做个人日志记录,勿喜勿喷 使用两个浏览器,带着下面的问题去看:https://www.cnblogs.com/tyhj-zxp/p/7605879.html.就会清晰了 1.下载和安装nexus ...
- Fizz Buzz 面试题
在CSDN上看到一篇文章<软件工程师如何笑着活下去>,本来是想看对这个行业的一些评价和信息,不曾检索到关于Fizz Buzz的面试题,上网搜了一下,顿感兴趣.留下此文,以表回忆. java ...
- 转载-《Python学习手册》读书笔记
转载-<Python学习手册>读书笔记 http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html
- markdown code test - markdown code test - markdown code test - markdown code test
目录 主要代码 bottom cc 主要代码 <div class="tocCol1 js-toc"></div> <a>bc</a> ...
- Hibernate的Cascade——级联操作
在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当 前实体时,针对当前实体的操作会影响到相应配置的关联实体.比如针对当前实体进行保存操作 ...