سؤال

لدي 2 مجالات .. ماجستير والتفاصيل.

Master{
 String masterName; 
 static hasMany=[details:Detail]
}

Detail
{
  String detailName ; 
  static belongsTo =[master:Master];
}

لدي شكل هذا التعامل مع حفظ

def save = {
 .....
 def master = new Master(params);
 params.detailsName.eachWithIndex(dtName, index ->
   def detail = new Detail();
   detail.detailName = dtName; 
   ....
   master.addToDetails(detail);
 }
  .....
 master.save(flush:true);
}

عندما اتصلت Master.Save ()، إذا كانت هناك أخطاء بالتفصيل، فإن سيد لا يزال يوفر البيانات. أريد أن أعرف كيفية إلغاء سيد إذا كانت هناك أخطاء في التفاصيل وأود أن أعرف كيفية تتبع الأخطاء في التفاصيل؟

شكرا

هل كانت مفيدة؟

المحلول

المعاملة هي ما تحتاجه. يمكنك إجراء حفظ في الخدمة. في الخدمات مع المعاملة = صحيح، يتم لف جميع الطرق في المعاملات، وسوف يكون هناك استعادة تلقائية إذا تم إلقاء أي استثناء:

class MasterService {

    boolean transactional = true

    def save(...) { }
}

أو يمكنك استخدام مهدئ إغلاق في وحدة التحكم الخاصة بك لالتفاف رمزك في المعاملة إذا كنت لا ترغب في إنشاء خدمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top