博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate使用@PrePersist 注解自动生成实体的所属部门
阅读量:5935 次
发布时间:2019-06-19

本文共 875 字,大约阅读时间需要 2 分钟。

我们知道通过@CreatedBy注解,能够在实体进行实例化时,自动生成createUser信息。那么,是否可以在进行实例化时,同时根据生成的createUser信息,对应生成相应的其它信息呢?

比如:我们现在需要在生成createUser时,自动生成当前用户所在的部门createDepartment信息.

解决方案

我们首先想到的是Override相关方法,比如:setCreateUser

public void setCreateUser(User user) {    this.user = user;    this.department = user.getDepartment();}

很失望,该方法并没有起作用。这说明,jpa在处理@CreatedBy注解时。并未调用setCreateUser()方法。

接着,查询spring jpa data官方文档,并没有得到想要的答案。查询hibernate 找到如下章节:

实现

有了方法了,我们尝试进行实践。

@PrePersist    public void setDepartment() {        this.department = this.createUser.getDepartment();    }

测试通过。在进行持久化时,成功的生成了部门信息。

最后,查看引入的注解,竟然发现它一直躺在:javax.persistence包中。为自己汗颜!

clipboard.png

事实再次告诉我:官方文档的学习! JAVA基础的学习! 很重要!

总结

能成功生成的原因猜想:

hibernate先执行了@CreateBy注解,然后执行了@PrePersist注解。所以要执行@PrePersist时,createUser并不为null,最后执行成功。

最佳实践告诉我们:我们遇到的问题,其它大牛们早就遇到而且给出了最佳的方案了。我们要做的就是:找到他们!而在相当长的一段时间里(相信99%的程序员会一直处于在这个相当长的时间里),我们都不会成为大牛。所以,我们要提升的永远是:找解决方案的能力!

转载地址:http://usjtx.baihongyu.com/

你可能感兴趣的文章
匈牙利公开赛给国乒提醒 周雨违规被取消资格
查看>>
前端性能优化之http请求的过程
查看>>
这么说吧,Lucene很简单,其实就是个框架,用于全文检索用的
查看>>
【数据结构_浙江大学MOOC】第三四五讲 树
查看>>
Redis随笔-rename效率问题
查看>>
【推荐】jquery开发的大型web应用—H5编辑器工具
查看>>
[译] 设计一个现代的缓存
查看>>
C# 8的Ranges和递归模式
查看>>
sc 判断服务是否存在
查看>>
[MySQL FAQ]系列 -- 如何快速比较查询结果是否一致
查看>>
策略模式--红色警戒2之兵种设计
查看>>
Linux智能手机安全策略研究
查看>>
Oracle EM Express要求用户名和密码
查看>>
symantec sep 11卸载工具
查看>>
ASP.NET中常用输出JS脚本的类(改进版)
查看>>
Windows数据类型探幽——千回百转你是谁?(2)
查看>>
JavaScript 开发人员需要知道的简写技巧
查看>>
VS2010工具箱变灰解决方案
查看>>
漏洞门 国产x86处理器纷纷表态不受影响
查看>>
Postfix 电子邮件系统精要
查看>>