当前位置:网站首页>【原创】JPA中@PrePersist和@PreUpdate的用法
【原创】JPA中@PrePersist和@PreUpdate的用法
2022-08-09 10:23:00 【DCTANT】
在项目里看到了@PrePersist和@PreUpdate,这两个注解是我以前从来没见过的,百度了半天只知道它是做什么的,但是不知道怎么用,还是得我自己试了才知道。
参考链接(https://blog.csdn.net/sunrainamazing/article/details/75041402、https://blog.csdn.net/szyyyp/article/details/54311118)
@PrePersist
我通过打断点试了一下,发现其中@PrePersist的切点是在entityManager.persist(entity)的反射invoke方法执行前调用
可以理解为持久化对象前执行,因此就可以做些事情了,比如设置创建时间,设置对象删除状态等等
@PreUpdate
我同样通过打断点,发现这个注解执行的切面实在entityManager.merge(entity);之后执行,而且如果更新发现更新前和更新后值没有发生任何变化,则@PreUpdate内的方法并不会被执行。这就很奇怪了,明明叫PreUpdate,却在merge方法后执行,不知道Spring团队是怎么想的,或许是我太菜了,不懂他们的深刻造诣吧
既然知道了它的执行点,那就也可以做些事了,比如更新“更新时间”,如果是删除则更新删除时间等等。
怎么才能被执行?
这是最关键的,也是上述两篇博客并没有讲到的,那就是需要在BasePo上加一个注解!!
@EntityListeners(JpaListener.class),这个注解是必须要加的,不然你会发现这两个方法根本不会被调用!!这个太坑了,害得我找了好久才发现这个问题!!
边栏推荐
- 借问变量何处存,牧童笑称用指针,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang类型指针(Pointer)的使用EP05
- RTP
- 元组 字典 集合
- By asking where the variables are stored, the shepherd boy laughed and said to use pointers, Go lang1.18 introductory refining tutorial, from Bai Ding to Hongru, the use of go lang type pointers (Poin
- 工作--今天的学习
- 浅析JWT安全问题
- 分类预测 | MATLAB实现CNN-LSTM(卷积长短期记忆神经网络)多特征分类预测
- 快速解决MySQL插入中文数据时报错或乱码问题
- Technology Sharing | Sending Requests Using cURL
- 极域Killer 1.0代码
猜你喜欢
程序员的专属浪漫——用3D Engine 5分钟实现烟花绽放效果
Attentional Feature Fusion
ESIM(Enhanced Sequential Inference Model)- 模型详解
编解码(seq2seq)+注意机制(attention) 详细讲解
自启服务mock联调跨域问题
使用cpolar远程连接群晖NAS(创建临时链接)
深度学习--循环神经网络(Recurrent Neural Network)
深度学习--自编码器(AutoEncoder)
相伴成长,彼此成就 用友U9 cloud做好制造业数智化升级的同路人
使用.NET简单实现一个Redis的高性能克隆版(四、五)
随机推荐
conditional control statement
小程序员的发展计划
By asking where the variables are stored, the shepherd boy laughed and said to use pointers, Go lang1.18 introductory refining tutorial, from Bai Ding to Hongru, the use of go lang type pointers (Poin
《刷题日记》2
机器学习-逻辑回归(logistics regression)
xmms播放器加了播放列表的管理功能
Win系统 - 罗技 G604 鼠标蓝灯闪烁、失灵解决方案
RTP
JDBC中的增删改查操作
socket实现TCP/IP通信
Tom Morgan | Twenty-One Rules of Life
如何快速打通镜像发布流程?
Umi Hooks
壁纸
stimulus.js 初体验
Attentional Feature Fusion
cannot import name ‘load_offloaded_weights‘ from ‘accelerate.utils‘ (/home/huhao/anaconda3/envs/huha
阿里神作!吃透这份资料入厂率高达99%
1002 写出这个数 (20 分)
学习NET-SNMP之一 ---------编译NET-SNMP程序。