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 会将目标关联的所有字段全部查询出来,对于有强迫症的我们来说,当然是不允许的. 这时候我们可以使用 ...
随机推荐
- (转)批量插入sql语句
为了减少数据库连接的I/O开销,一般会把多条数据插入放在一条SQL语句中一次执行.1.INSERT INTO TABLE(col1, col2) VALUES(val11, val12), (val2 ...
- P1342 请柬
最近一直在做最短路......所以今天就再做一道最短路吧.... 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片 ...
- LR12中针对WebServices协议的三种脚本开发模式
一,webservices协议简介 webservices是建立可交互操作的分布式应用程序的新平台,它通过一系列的标准和协议来保证程序之间的动态连接, 其中最基本的协议包括soap,wsdl,uddi ...
- Ubuntu16.04安装Redis
前言 Redis是常用基于内存的Key-Value数据库,比Memcache更先进,支持多种数据结构,高效,快速.用Redis可以很轻松解决高并发的数据访问问题:作为实时监控信号处理也非常不错. 环境 ...
- css的扩展技术
CSS的扩展技术 (在原来的CSS语言的基础上扩展了js,可以在里面写js ) 一.less 定义: @color:red; //定义颜色 @body-color:blue; @div-color:y ...
- redis-使用问题
记录一下相关的问题,使用参考http://www.runoob.com/redis/ 1.DENIED Redis is running in protected mode 这个是启用了保护模式,这个 ...
- 【记录】VMware解决网络找不到服务器的问题
本想在虚拟机上的Linux上练习安装Mysql8.0版本的,网络连不上的问题卡了N天简直 1. 点击虚拟机右键设置,虚拟机默认设置为NAT模式,这里无需修改. 2. 点击编辑,虚拟网络设置,勾选主机连 ...
- Type Conversion
文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本文原更新于作者的github博客,这里给出链接. 什么是转换 转换是接受一个类型的值并使用它作为另一个类型的等价值的过程.转换 ...
- Vue-Router路由 Vue-CLI脚手架和模块化开发 之 路由常用配置与路由嵌套
vue-router路由常用配置 1.mode:配置路由模式,默认为hash,由于URL很丑,可以修改为history,但是需要服务端的支持: 以上一篇的博文为实例: 初始时url的显示: 使用mod ...
- kafka学习-坑篇
安装(滤过) 启动(滤过) 坑(开始)--- topic creat完成后准备使用console-produce发布一个topic,错误如下: [-- ::,] WARN [Producer clie ...