springboot jpa非同步任務事物丟失問題

2021-10-11 02:02:18 字數 936 閱讀 1292

在springboot中使用非同步任務@async 或 使用quartz任務排程時,出現事務丟失問題,事物丟失不會影響資料查詢(select),但是當進行增刪改操作時,因為事物問題,無法執行結果到資料庫。

使用@transactional註解也無法注入事務。

發現問題如下:

我們在配置事務時,缺省會使用datasourcetransactionmanager 

@bean 

public datasourcetransactionmanager transactionmanager(datasource datasource)

datasourcetransactionmanager 也繼承了platformtransactionmanager,但是通過檢視jpa的官方文件我們可以發下,jpa使用的事務管理器為jpatransactionmanager

官方文件如下:

@configuration

@enablejparepositories

@enabletransactionmanagement

@bean

public datasource datasource()

@bean

public localcontainerentitymanage***ctorybean entitymanage***ctory()

@bean

public platformtransactionmanager transactionmanager(entitymanage***ctory entitymanage***ctory)

}

@enabletransactionmanagement開啟事務
jpa 2.x版本預設使用事務管理器為jpatransactionmanager ,不需要去配置事務管理器

Spring Boot JPA 命名規則

一 常用規則速查 1 and 並且 2 or 或 3 is,equals 等於 4 between 兩者之間 5 lessthan 小於 6 lessthanequal 小於等於 7 greaterthan 大於 8 greaterthanequal 大於等於 9 after 之後 時間 10 be...

SpringBoot JPA常用註解

就像 table註解用來標識實體類與資料表的對應關係類似,column註解來標識實體類中屬性與資料表中字段的對應關係。column name broker id columndefinition bigint 11 nullable false private long brokerid id co...

Spring Boot JPA訪問Mysql示例

上篇演示了通過m en構建spring boot 專案,引用web模組啟動應用,完成簡單的web 應用訪問,本章內容在此基礎上面加入資料訪問與埠修改,下文 與演例 本用例純手工測試通過,放心入坑 修改預設埠 在src main resources下加入application.properties內容...