社区首页 >问答首页 >在事务方法中访问时,JPA审核LastModifiedBy/LastModifiedDate为空

在事务方法中访问时,JPA审核LastModifiedBy/LastModifiedDate为空
EN

Stack Overflow用户
提问于 2019-01-23 10:14:36
回答 1查看 2.2K关注 0票数 0

我的审计设置如下所示,它们运行良好。问题是当我想在更新之前在事务性方法中访问它们时,更新id/date总是为null,我不知道为什么。

代码语言:javascript
代码运行次数:0
复制
@CreatedBy
@Column(name = "CREATE_ID", updatable = false, nullable = false)
private String createId;

@LastModifiedBy
@Column(name = "UPDATE_ID", nullable = false)
private String updateId;

@CreatedDate
@Column(name = "CREATE_DATE", updatable = false, nullable = false)
private Date createDate;

@LastModifiedDate
@Column(name = "UPDATE_DATE", nullable = false)
private Date updateDate;

调用保存的create/update方法。

注意:这两种方法都很好,可以使用正确的create/update审计值在数据库中创建/更新记录。问题是我无法在update方法中访问update id/date,我不知道为什么/如何修复它。

代码语言:javascript
代码运行次数:0
复制
@Override
@Transactional
public MyObj create(MyObj myObj) {
    MyObj createdMyObj = myObjRepo.save(myObj);
    System.out.println(createdMyObj.getCreateId()); // This works fine
    return createdMyObj;
}

@Override
@Transactional
public MyObj update(MyObj myObj) {
    MyObj updatedMyObj = myObjRepo.save(myObj);
    System.out.println(updatedMyObj.getUpdateId()); // This is null
    return updatedMyObj;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-23 23:00:25

Spring的审计特性是基于JPA生命周期事件的,只有当JPA实现实际更新数据库时才触发用于设置上次修改的列。,在许多情况下,数据库是在事务结束时触发的。

JPA规范第3.5.3节

PreUpdate和PostUpdate回调分别发生在对实体数据的数据库更新操作之前和之后。这些数据库操作可能发生在实体状态更新时,也可能发生在将状态刷新到数据库时(可能在事务结束时)。

因此,如果希望设置这些值,则需要刷新持久性上下文。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54333296

复制
相关文章
Spring认证中国教育管理中心-Spring Data Couchbase教程三
原标题:Spring认证中国教育管理中心-Spring Data Couchbase教程三(Spring中国教育管理中心)
IT胶囊
2022/01/11
1.8K0
Spring认证中国教育管理中心-Spring Data Couchbase教程三
Spring Data JPA 的时间注解:@CreatedDate 和 @LastModifiedDate
选择 Spring Data JPA 框架开发时,常用在实体和字段上的注解有@Entity、@Id、@Column等。在表设计规范中,通常建议保留的有两个字段,一个是更新时间,一个是创建时间。Spring Data JPA 提供了相应的时间注解,只需要两步配置,就可以帮助开发者快速实现这方面的功能。
happyJared
2018/12/24
6.3K0
Maven工程搭建spring boot+spring mvc+JPA
1、maven工程,少不了pom.xml,spring boot的引入可参考官网:
JQ实验室
2022/02/09
4420
Spring Data JPA 自动保存操作人 操作时间等
有些业务数据需要对数据的创建人、创建时间、最后更新人和最后更新时间进行记录。如果使用Spring Data Jpa做数据新增或更新,可实现自动保存这些信息而不需要显式设置对应字段的值。实现自动记录上述信息主要有5个注解:
BUG弄潮儿
2022/03/08
1.6K0
Spring Data JPA 时间注解:@CreatedDate 和 @LastModifiedDate
选择 Spring Data JPA 框架开发时,常用在实体和字段上的注解有@Entity、@Id、@Column等。在表设计规范中,通常建议保留的有两个字段,一个是更新时间,一个是创建时间。Spring Data JPA 提供了相应的时间注解,只需要两步配置,就可以帮助开发者快速实现这方面的功能。
happyJared
2020/02/11
4.4K1
jdbc java_Springdata
刚进公司,人生地不熟,偷偷藏着本《mybatis入土为安》,以为可以靠mybatis混的轻松点,谁知天有不测风云,大家用的是JPA。
全栈程序员站长
2022/11/01
1K0
jdbc java_Springdata
Spring认证中国教育管理中心-Spring Data JPA 参考文档七
原标题:Spring认证|Spring Data JPA 参考文档七(内容来源:Spring中国教育管理中心)
IT胶囊
2021/11/03
1K0
Spring认证中国教育管理中心-Spring Data JPA 参考文档七
Spring Boot中Spring data注解的使用
Sring data JPA为我们提供了很多有用的注解,方便我们来实现各种复杂的功能。本文我们将会从Spring Data Annotations和Spring Data JPA Annotations两部分来讲解。
程序那些事
2020/07/08
2.7K0
Jpa配置实体类创建时间更新时间自动赋值,@CreateDate,@LastModifiedDate
操作数据库映射实体类时,通常需要记录createTime和updateTime,如果每个对象新增或修改去都去手工操作创建时间、更新时间,会显得比较繁琐。
天涯泪小武
2019/01/17
5.1K0
java 对象为空判断_java中判断对象是否为空的方法
首先,直接使用 object == null 去判断,对象为null的时候返回true,不为null的时候返回false。然后,在object != null 为true的情况下,进一步去判断对象的所有属性是否为null。
全栈程序员站长
2022/08/15
11.5K0
java 对象为空判断_java中判断对象是否为空的方法
Collectors.toMap 当value为空时,报空指针
import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors;
botkenni
2022/11/12
3K0
Collectors.toMap 当value为空时,报空指针
SpringDataJPA笔记(1)-基础概念和注解
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
yingzi_code
2019/08/31
4K0
vue 对象判断为空_Vue中可用的判断对象是否为空的方法
vue有两个方法可用 1. JSON.stringify(evtValue)=='{}’ 2. Object.keys(xxx).length==0 js判断对象是否为空对象的几种方法 1.将json对象转化为json字符串,再判断该字符串是否为”{}” var data = {}; var b = (JSON.stringify(data) == “{}”); alert(b);//true 2.for in 循环判断 var obj = {}; var b =…
全栈程序员站长
2022/08/12
6.2K0
JavaScript中为空判断
摘要总结:本文介绍了JavaScript中为空判断的不同情况,包括判断字符串是否为空、变量是否被定义和初始化过。通过这些判断,可以帮助开发人员编写更加健壮的代码。
林老师带你学编程
2018/01/03
3.9K0
关闭jpa事务
因为jpa的事务是默认开启的,实际使用种尤其是针对读多写少的场景一定要关闭事务,在实际需要事务的地方用@Transactional注解开启。
johnhuster的分享
2022/03/29
1.6K0
关闭jpa事务
java判断空对象为空_Java判断对象是否为空(包括null ,””)的方法[通俗易懂]
public static boolean isEmpty(Object obj)
全栈程序员站长
2022/06/25
7K0
聊聊Spring Data Auditable接口的变化
spring-data-commons-1.12.8.RELEASE-sources.jar!/org/springframework/data/domain/Auditable.java
code4it
2018/09/17
7940
接近8000字的Spring/SpringBoot常用注解总结!安排!
可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot 来开发项目基本没啥大问题了!
Guide哥
2020/05/07
2.1K0
接近8000字的Spring/SpringBoot常用注解总结!安排!
Spring 注解大全
@Autowired标记Spring将要解析和注入的依赖项。我们可以使用构造函数、setter或字段注入来使用这个注释。
终身幼稚园
2019/07/19
6850
Spring 注解大全
Spring Data Commons审计
Spring Data 提供了复杂的支持,以透明地跟踪谁创建或更改了实体以及更改发生的时间。要从功能中获益,您必须为实体类配置审计元数据,这些元数据可以使用注释或通过实现接口来定义。此外,必须通过注解配置或 XML 配置来进行审计以注册所需的基础架构组件。有关配置示例,请参见特定于商店的部分。
IT胶囊
2021/09/29
6690
Spring Data Commons审计

相似问题

spring jpa审核lastmodifiedby和lastmodifiedDate都可以,但createdBy和createdDate注释总是空的

111

如何以UTC格式保存Spring JPA中审核字段@CreatedDate、@LastModifiedDate的时间戳

119

spring boot中的mongodb审计,用于保存createdDate、lastModifiedDate、createdBy、lastModifiedBy

229

@LastModifiedBy和@LastModifiedDate不适用于嵌入式对象

12

JPA事务在方法结束时未提交

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档