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

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

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

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

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

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

1 جواب

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

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

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

0 رأی
1 جواب میانگین بازدید روزانه 0.2833 بازدید
سوال 3 ماه قبل در تالار برنامه نویسی توسط nirvana (99 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.4661 بازدید
سوال 4 ماه قبل در تالار برنامه نویسی توسط nirvana (99 امتیاز)
+1 رأی
1 جواب میانگین بازدید روزانه 0.2957 بازدید
سوال 6 ماه قبل در تالار برنامه نویسی توسط nirvana (99 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.2449 بازدید
سوال 6 ماه قبل در تالار برنامه نویسی توسط nirvana (99 امتیاز)
+1 رأی
1 جواب میانگین بازدید روزانه 0.1662 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.2491 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.1352 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.18103 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.157 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1395 بازدید
کانال تلگرام جواب یاب
...