前言:对于大字段,我们在查询列表的时候不需要查询,但是修改的时候有需要展示大字段内容,怎么办

问1.jpa如何懒加载大字段?即查询列表的时候不查询出来

问2.懒加载之后又如何获取懒加载字段。比如,在后台修改的实体的时候,需要展示内容,如何获取detail内容(懒加载,它没有加载)

1.jpa如何懒加载大字段?detail是我的大字段

@Entity

public class ParkDynamics extends TemporalEntity implements FieldHandled{},实现FieldHandled

具体实体代码如下

@Entitypublic classParkDynamics extends TemporalEntity implements FieldHandled {private String title; //标题

private String content; //内容

private String status; //状态 (0:不可见;1:可见)

private String remarks; //备注

privateString creatorName;privateString updatorName;

@Lob

@Basic(fetch=FetchType.LAZY)

@Column(name="detail")private String detail;//图文交替型内容(用文本编辑器)

@OneToMany(mappedBy= "parkDynamics",fetch =FetchType.EAGER)private Set parkDynamicsFiles = new HashSet<>(); //公园动态文件

publicString getTitle() {returntitle;

}public voidsetTitle(String title) {this.title =title;

}publicString getContent() {returncontent;

}public voidsetContent(String content) {this.content =content;

}publicString getRemarks() {returnremarks;

}public voidsetRemarks(String remarks) {this.remarks =remarks;

}public String getCreatorName() { returncreatorName; }public void setCreatorName(String creatorName) { this.creatorName =creatorName; }public String getUpdatorName() { returnupdatorName; }public void setUpdatorName(String updatorName) { this.updatorName =updatorName; }publicString getStatus() {returnstatus;

}public voidsetStatus(String status) {this.status =status;

}public Set getParkDynamicsFiles() { returnparkDynamicsFiles; }public void setParkDynamicsFiles(Set parkDynamicsFiles) { this.parkDynamicsFiles =parkDynamicsFiles; }publicString getDetail() {if (fieldHandler != null) {return (String) fieldHandler.readObject(this, "detail", detail);

}return null;

}public voidsetDetail(String detail) {if(detail == null){if(fieldHandler!=null){

fieldHandler.writeObject(this, "detail", this.detail, detail);return;

}

}this.detail =detail;

}

@Transientprivate FieldHandler fieldHandler;//用于延迟加载表字段,关联对象延迟加载的话无需此技术

@JsonIgnorepublicFieldHandler getFieldHandler() {returnfieldHandler;

}public voidsetFieldHandler(FieldHandler fieldHandler) {this.fieldHandler =fieldHandler;

}

}

2.对于懒加载的字段,如何获取其内容呢

关键代码如下:(String) fieldHandler.readObject(this, "detail ", detail);,相当于去读对象的detail属性,然后会真是的加载detail的内容。this代表实体对象,这样实体对象就detail就有内容了。

但是实际如果不是在一个事务中是不行的。也就是获得实体和使实体去加载懒加载的字段不在同一个事务中,你执行(String) fieldHandler.readObject(this, "detail ", detail)是会报错的。

也就有了如下的代码,对需要获取实体全部内容的getById和getByType进行了封装,放在一个事务service类中

@Transactional

@Service

public class AnimalClassServiceImpl implements AnimalClassService{

@Autowired

private AnimalClassRepository animalClassRepository;

@Override

public AnimalClass getById(Long id) {

AnimalClass animalClass = animalClassRepository.getById(id);

animalClass.setContent(null);

return animalClass;

}

@Override

public AnimalClass getFirstByType(String type) {

AnimalClass animalClass = animalClassRepository.getFirstByType(type);

animalClass.setContent(null);

return animalClass;

}

}

mysql 懒加载数据_jpa如何懒加载大字段,懒加载之后又如何获取懒加载字段相关推荐

  1. TouTiao开源项目 分析笔记7 加载数据的过程

    1.以新闻页中的段子数据显示为例 1.1.首先执行InitApp==>SplashActivity. 因为在AndroidManifest.xml中定义了一个<intent-filter& ...

  2. vue2.0无限滚动加载数据插件

      做vue项目用到下拉滚动加载数据功能,由于选的UI库(element)没有这个组件,就用Vue-infinite-loading 这个插件代替,使用中遇到的一些问题及使用方法,总结作记录! 安装: ...

  3. 【Kissy WaterFall】实行手动加载数据

    前言:由于Kissy WaterFall默认是监听滚动事件来实现数据动态加载的,但是有一些情况要用到手动加载数据.以下是使用Kissy WaterFall实现手动加载数据的方法. 最终实现效果:点击& ...

  4. 高德地图 Vue 中 加载 数据可视化 Loca 的方式

    高德地图 Vue 中 加载 数据可视化 Loca 的方式 今天想用 Loca 试试如何的,结果怎么都加载不上,我的代码是这样的 AMapLoader.load({key: "这个就不展示了& ...

  5. bootstrap 数据加载中提示_解决Quartz定时器中查询懒加载数据no session的问题

    作者:下一秒升华 出自:CSDN 原文:blog.csdn.net/u013815546/article/details/53032445 相信大家在web开发过程中一定遇到过一种情况,Class班级 ...

  6. html5 数据懒加载图片,Jsoup+HtmlUnit获取懒加载数据

    需要的包: org.projectlombok lombok provided 1.16.20 org.jsoup jsoup 1.8.3 net.sourceforge.htmlunit htmlu ...

  7. webbrowser控件 加载为空白_深入学习SAP UI5框架代码系列之一:UI5 Module的懒加载机制...

    本文是深入学习SAP UI5框架代码系列的第二篇文章. 系列目录 SAP UI5应用开发人员了解UI5框架代码的意义 UI5 module懒加载机制 UI5 控件渲染机制 HTML原生事件 VS SA ...

  8. Spark-SQL从MySQL中加载数据以及将数据写入到mysql中(Spark Shell方式,Spark SQL程序)

    1. JDBC Spark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中. 1.1. 从MySQ ...

  9. sparksql加载mysql表中的数据

    sparksql加载mysql表中的数据 <dependency><groupId>mysql</groupId><artifactId>mysql-c ...

最新文章

  1. SQL Server将数据导出SQL脚本的方法 转
  2. 适配器模式:我真的不难
  3. 2020河南工业大学计算机考研科目,你知道2020年河南工业大学硕士研究生考研有哪些复试科目...
  4. Node.js 应用故障排查手册 —— 雪崩型内存泄漏问题
  5. 约束最优化方法 (一) 最优性条件
  6. Linux 安装Zookeeper
  7. PHPExcel基本使用
  8. 【整理】Ubuntu10.04下安装Altera9.1套件
  9. Wallpaper透视效果的C++实现(含源文件)
  10. 二、逻辑回归LR面试题总结
  11. 神经网络测试样本的选择,如何测试神经网络模型
  12. 《数据库系统概论》复习
  13. 房价――你欠中国老百姓一次彻底的崩盘!
  14. Power算法求X的N次幂
  15. 51单片机——串口通信详解(STC89C51为例)
  16. linux串口工具 kermit,转:Linux下的串口工具kermit
  17. BUUCTF 每日打卡 2021-5-6
  18. 关于 Python2 和 Python3 中的 Unicode 问题。
  19. win10安装keras theano
  20. c语言程序设计教程南京大学出版社答案,《新编C语言程序设计教程》习题解答与实验指导...

热门文章

  1. linux不挂断运行python文件
  2. 谷歌发布端到端AI平台,还有用于视频和表格的AutoML、文档理解API等多款工具
  3. Android官方开发文档Training系列课程中文版:创建自定义View之View的创建
  4. 人工智能与量子计算在有前途的新忆阻器中融合
  5. MySQL优化(2)--------常用优化
  6. 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)
  7. SQL Server-基础-经典SQL语句
  8. SSIS添加分区-动态
  9. IP地址的分类——a,b,c 类是如何划分的
  10. mysql 序列号生成器 (自定义函数)