اجرای بخشی از کد به صورت None Transactional

0 رأی
میانگین بازدید روزانه 0.3153 بازدید
با سلام

در خط تولید wise از @Tranasctional  بالای متد ذخیره(beforSave) در لایه Manager استفاده کرده ایم.

به عنوان بخشی از اعتبار سنجی متد دیگری را در این بخش فراخوانی میکنیم که در مواردی به خطا می خورد اما این خطا نباید باعث Rollback کل ترانزکشن شود.

چگونه می توانیم فراخوانی این متد را غیر ترانزکشنال کنیم؟

با تشکر
سوال 5 ماه قبل در تالار برنامه نویسی توسط Saeed Mirshams (146 امتیاز)

1 جواب

+1 رأی
روی اولین متدی که @Transactional دارد، مثلاً متد save باید از مقداردهی مشخه noRollbackFor در @Transactional آن استفاده کنید و نام کلاسهای خطاهایی که نمی خواهید موجب rollback بشوند را مشخص کنید.

توجه بفرمایید که با توجه به ساختار پراکسی در spring تنها @Transactional روی اولین متد public ای که از بیرون spring bean فراخوانی می شود تاثیرگذار است و بقیه @Transactional ها به طور کلی بی تاثیر هستند.
جواب 5 ماه قبل توسط seyyedjamalal (1,220 امتیاز)
همین کار را هم انجام دادیم. اما نشد.
باز هم رولبک میشه.
مشکل را با NativeQuery موقتا دور زدیم.
لطفاً سلسله متدهایی که فراخوانی می شوند را نام ببرید. فکر می کنم تنظیمات را جای اشتباهی گذاشته اید. همانطور که در جواب عرض شد @Transactional روی فراخوانیهای داخلی bean لحاظ نمی شود. متد beforeSave هم که احتمالاً منظور شما از آن beforeMerge بوده است، متدی protected است و فراخوانی آن داخلی محسوب می شود.

سوال های مشابه

0 رأی
1 جواب میانگین بازدید روزانه 0.9521 بازدید
سوال 3 هفته قبل در تالار برنامه نویسی توسط nirvana (99 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 1.1140 بازدید
سوال 1 ماه قبل در تالار برنامه نویسی توسط nirvana (99 امتیاز)
+1 رأی
1 جواب میانگین بازدید روزانه 0.4143 بازدید
سوال 3 ماه قبل در تالار برنامه نویسی توسط nirvana (99 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.3841 بازدید
سوال 3 ماه قبل در تالار برنامه نویسی توسط nirvana (99 امتیاز)
+1 رأی
1 جواب میانگین بازدید روزانه 0.255 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.383 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.1647 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.2197 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.1255 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1485 بازدید
کانال تلگرام جواب یاب
...