亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JPA 審計 LastModifiedBy/LastModifiedDate 在事務方法中被訪問

JPA 審計 LastModifiedBy/LastModifiedDate 在事務方法中被訪問

精慕HU 2022-05-20 18:30:41
我的審計設置如下所示,它們工作正常。問題是當我想在更新之前在事務方法中訪問它們時,更新 id/date 始終為空,我不知道為什么。@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;調用保存的創建/更新方法。注意:這兩個都可以正常工作,使用正確的創建/更新審計值在數據庫中創建/更新記錄。問題是我無法在更新方法中訪問更新 ID/日期,我不確定為什么/如何修復它。@Override@Transactionalpublic MyObj create(MyObj myObj) {    MyObj createdMyObj = myObjRepo.save(myObj);    System.out.println(createdMyObj.getCreateId()); // This works fine    return createdMyObj;}@Override@Transactionalpublic MyObj update(MyObj myObj) {    MyObj updatedMyObj = myObjRepo.save(myObj);    System.out.println(updatedMyObj.getUpdateId()); // This is null    return updatedMyObj;}
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

Spring Data JPA 的審計功能基于 JPA 生命周期事件,用于設置最后修改列的事件PreUpdate僅在 JPA 實現實際更新數據庫時觸發,這在許多情況下是在事務結束時。

請參閱JPA 規范的第 3.5.3 節:

PreUpdate 和 PostUpdate 回調分別發生在對實體數據進行數據庫更新操作之前和之后。這些數據庫操作可能發生在更新實體狀態時,也可能發生在狀態刷新到數據庫時(可能在事務結束時)。

因此,如果要設置這些值,則需要刷新持久性上下文。


查看完整回答
反對 回復 2022-05-20
  • 1 回答
  • 0 關注
  • 314 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號