بتاريخ: 9 مايو 201213 سنة comment_224295 السلام عليكمI have tow entities and there is a master-detail relation ship between themThe first entity name is "BenifitTransactions"the second one is "BenifitTransDtl"and there is association between them as shown in the attached photoالمشكلة انى لما بعمل insert لسجل فى الماستر و insert لسجل تانى فى الdetailبيظهر الخطأ دة (oracle.jbo.DMLException) JBO-26041: Failed to post data to database during "Insert": SQL Statement "BEGIN INSERT INTO IAIGC.HRS_BENIFIT_TRANS_DTL(ID,BTR_ID,EDP_ID,PAID_AMOUNT) VALUES (:1,:2,:3,:4) RETURNING ID INTO :5; END;". ----- Level 1: Detail 0 ----- (java.sql.SQLIntegrityConstraintViolationException) ORA-01400: cannot insert NULL into ("IAIGC"."HRS_BENIFIT_TRANS_DTL"."BTR_ID") ORA-06512: at line 1 ال PK فى الماستر بيحصلة population عن طريق database trigger بيروح يجيب الرقم من فانكشن على الداتابيزو انا عامل نوع ال attribute DBSequenceمع العلم انى لما بعمل insert فى الماستر و بعدين احفظ و بعدين اعمل insert فى ال detail و احفظ يبقى مفيش مشاكللكن لو حاولت اعمل save مرة واحد على الاثنين يظهر الخطأ دةمرفق شكل ال relation و صورة للخضائص الخاصة بال PKاية حل المشكلة دى تم تعديل 9 مايو 201213 سنة بواسطة tarek_fathi تقديم بلاغ
بتاريخ: 9 مايو 201213 سنة comment_224309 هذه مشكلة معروفة لأن العلاقة Master Detail لكي تعمل بشكل سليم فيجب أن يكون الـ master PK له قيمة ، ولذلك عندما تقوم بحفظ الـ Master ثم الإدخال في الـ detail فلا توجد مشكلة وحلها بسيط عن طريق إدخال قيمة الـ foreign key لتساوي قيمة الـ PK داخل doDML تقديم بلاغ
بتاريخ: 9 مايو 201213 سنة كاتب الموضوع comment_224318 شكرا جزيلا يا بشمهندس . بس ممكن لو سمحت مثال توضيحي اكتب اية فى الميثود doDml تقديم بلاغ
بتاريخ: 9 مايو 201213 سنة comment_224319 setBtrId((Number)ADFUtils.findIterator("iteratorName").getCurrentRow().getAttribute("Id");//change values تقديم بلاغ
بتاريخ: 9 مايو 201213 سنة comment_224322 المفترض انها تشتغل مظبوط طالما انك بتستخدم dbSequence للجدول الرئيسى وعامل (composition) بين الجدول الرئيس والجدول الفرعىاولا: اعمل test على application module للتأكد من ان العلاقة بين الجدولين سليمة (يعنى لما تدخل صف فى الجدول الرئيسى هيعوض عن pk مثلا ب -1 ولما تدخل صف فى الجدول الفرعى هيكون fk ب -1)ثانيا : اذا كانت العلاقة سليمة واستمر ظهور الخطأ اذهب الى ملف BenefitTransDtlImpl وضع الكود التالى داخله public void postChanges(TransactionEvent e) { if (getPostState() == STATUS_NEW || getPostState() == STATUS_MODIFIED) { BenfitTransactionsImpl trans= getBenfitTransactions(); if (trans!= null) { if (trans.getPostState() == STATUS_NEW) { trans.postChanges(e); } } } super.postChanges(e); } تم تعديل 9 مايو 201213 سنة بواسطة miro_aer تقديم بلاغ
بتاريخ: 13 مايو 201213 سنة كاتب الموضوع comment_224445 السلام عليكماسف على تاخرى عن الرد بسبب ظروف مرضيةانا جربت الحل الاول بتاع بشمهندس مصطفى و ظهرلى الخطا دة (oracle.jbo.DMLConstraintException) JBO-26048: Constraint "HRS_BTD_BTR_FK" is violated during post operation "Insert" using SQL statement "BEGIN INSERT INTO IAIGC.HRS_BENIFIT_TRANS_DTL(ID,BTR_ID,EDP_ID,PAID_AMOUNT) VALUES (:1,:2,:3,:4) RETURNING ID INTO :5; END;". ----- Level 1: Detail 0 ----- (java.sql.SQLIntegrityConstraintViolationException) ORA-02291: integrity constraint (IAIGC.HRS_BTD_BTR_FK) violated - parent key not found ORA-06512: at line 1 اما بالنسبة للحل الانى بتاع ميرو فلما جيت انقل الكود ظهرلى انه كله خطأ كما فى الصورة تقديم بلاغ
بتاريخ: 13 مايو 201213 سنة كاتب الموضوع comment_224489 السلام عليكمانا جربت ابعت القيمة بتاعة ال PK لل FK فى ال doDML method كاتالي protected void doDML(int operation, TransactionEvent e) { DCBindingContainer bc = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry(); DCIteratorBinding iter = bc.findIteratorBinding("TicketsTransactionHdrVoIterator"); Row hdr = iter.getCurrentRow(); System.out.println(hdr.getAttribute("Id")); Number num = (Number)hdr.getAttribute("Id"); setBtrId(num); super.doDML(operation, e); } و انا بعمل debug الكود بيمشى كويس جدا لحد ما يوصل للسطر قبل الاخير setBtrId(num); و بعدها يرجع error java.lang.NullPointerExceptionعلى الرغم انه بيطبع ال id صح تقديم بلاغ
بتاريخ: 13 مايو 201213 سنة comment_224497 السلام عليكماسف على تاخرى عن الرد بسبب ظروف مرضيةانا جربت الحل الاول بتاع بشمهندس مصطفى و ظهرلى الخطا دة (oracle.jbo.DMLConstraintException) JBO-26048: Constraint "HRS_BTD_BTR_FK" is violated during post operation "Insert" using SQL statement "BEGIN INSERT INTO IAIGC.HRS_BENIFIT_TRANS_DTL(ID,BTR_ID,EDP_ID,PAID_AMOUNT) VALUES (:1,:2,:3,:4) RETURNING ID INTO :5; END;". ----- Level 1: Detail 0 ----- (java.sql.SQLIntegrityConstraintViolationException) ORA-02291: integrity constraint (IAIGC.HRS_BTD_BTR_FK) violated - parent key not found ORA-06512: at line 1 اما بالنسبة للحل الانى بتاع ميرو فلما جيت انقل الكود ظهرلى انه كله خطأ كما فى الصورة المفروض تضعها فى ملف الجافا الخاص بال entity مش ال view تقديم بلاغ
بتاريخ: 14 مايو 201213 سنة كاتب الموضوع comment_224505 السلام عليكماسف على تاخرى عن الرد بسبب ظروف مرضيةانا جربت الحل الاول بتاع بشمهندس مصطفى و ظهرلى الخطا دة (oracle.jbo.DMLConstraintException) JBO-26048: Constraint "HRS_BTD_BTR_FK" is violated during post operation "Insert" using SQL statement "BEGIN INSERT INTO IAIGC.HRS_BENIFIT_TRANS_DTL(ID,BTR_ID,EDP_ID,PAID_AMOUNT) VALUES (:1,:2,:3,:4) RETURNING ID INTO :5; END;". ----- Level 1: Detail 0 ----- (java.sql.SQLIntegrityConstraintViolationException) ORA-02291: integrity constraint (IAIGC.HRS_BTD_BTR_FK) violated - parent key not found ORA-06512: at line 1 اما بالنسبة للحل الانى بتاع ميرو فلما جيت انقل الكود ظهرلى انه كله خطأ كما فى الصورة المفروض تضعها فى ملف الجافا الخاص بال entity مش ال view ضيفتها فى ملف ال entity impl و لكن لم يحدث شئ و الخطا parent key not found لا يزال موجود تقديم بلاغ
بتاريخ: 14 مايو 201213 سنة كاتب الموضوع comment_224508 انا كان عندى 2 entities تانيين بينهم master-detail و شغالين كويس بدون مشاكل و هما خاصصين ببدل تعليم للموظففلما قارنت بينهم و بين دول - اللى هما بدل تذاكر - لقيت حاجة غريبه لقيت ال PK اللى فى الماستر بتاع بدل التعليم اللى هو شغال كويس بدون مشاكل مختلف عن ال PK بتاع بدل التذاكر اللى فى المشكلةو الاختلاف كان فى اكتر من حاجة كما فى الصور المرفقةفمثلا هتلاقى persistent معملوله disable و هتلاقى كمان فى فى الاخر كدة tab فيها database column و sequence تقديم بلاغ
بتاريخ: 14 مايو 201213 سنة كاتب الموضوع comment_224537 غيرت ال DBSequence الى oracle.jbo.domian.DBSequence و عملت run لقيتها اشتغلت كويس جدا و بيحفظ الماستر و الديتيل فى نفس الوقتالحمد لله المشكلة يظهر و الله اعلم ان فى كلاس تانية اسمها DBSequence موجود فى باكج تانية تقديم بلاغ
بتاريخ: 14 مايو 201213 سنة comment_224538 انا راجعت الصور اللى انت حطيتها فى اول الموضوع ولقيتك بتستخدم فى Association implement cascade deletecascade updateالسؤال هنا هل انت عامل enable للكلام ده فى قاعدة البيانات لأن الاختيارات دى مش بتشتغل الا لما تكون عامل cascade delete و cascade update للجداول دى فى قاعدة البياناتفلو انت مش عامل enable فى قاعدة البيانات .. يجب عليك انك لاتقوم باختيارهما http://docs.oracle.com/cd/E12839_01/web.1111/b31974/bcentities.htm#BABHFJFJ تقديم بلاغ
بتاريخ: 14 مايو 201213 سنة comment_224539 غيرت ال DBSequence الى oracle.jbo.domian.DBSequence و عملت run لقيتها اشتغلت كويس جدا و بيحفظ الماستر و الديتيل فى نفس الوقتالحمد لله المشكلة يظهر و الله اعلم ان فى كلاس تانية اسمها DBSequence موجود فى باكج تانية تقديم بلاغ
بتاريخ: 14 مايو 201213 سنة كاتب الموضوع comment_224540 انا راجعت الصور اللى انت حطيتها فى اول الموضوع ولقيتك بتستخدم فى Associationimplement cascade deletecascade updateالسؤال هنا هل انت عامل enable للكلام ده فى قاعدة البيانات لأن الاختيارات دى مش بتشتغل الا لما تكون عامل cascade delete و cascade update للجداول دى فى قاعدة البياناتفلو انت مش عامل enable فى قاعدة البيانات .. يجب عليك انك لاتقوم باختيارهما http://docs.oracle.c...es.htm#BABHFJFJ انا مأخدتش بالى من الحكاية دىدياما بنستفاد منك يا باشاجزاك الله خيرا تقديم بلاغ
بتاريخ: 14 مايو 201213 سنة comment_224541 انا راجعت الصور اللى انت حطيتها فى اول الموضوع ولقيتك بتستخدم فى Associationimplement cascade deletecascade updateالسؤال هنا هل انت عامل enable للكلام ده فى قاعدة البيانات لأن الاختيارات دى مش بتشتغل الا لما تكون عامل cascade delete و cascade update للجداول دى فى قاعدة البياناتفلو انت مش عامل enable فى قاعدة البيانات .. يجب عليك انك لاتقوم باختيارهما http://docs.oracle.c...es.htm#BABHFJFJ تصحيح لكلامى..... حصل عندى خلط فى optimize For DataBase cascade deleteWhen selected, this option allows the composing entity object to be removedunconditionally together with any composed children entities. If the related Optimizefor Database Cascade Delete option is deselected, then the composed entity objectsperform their normal DELETE statement at transaction commit time to make thechanges permanent. If the option is selected, then the composed entities do notperform the DELETE statement on the assumption that the database ON DELETECASCADE constraint will handle the deletion of the corresponding rows.So, if you have selected "optimize for cascade delete," then you've told ADF "I have a constraint in the database with ON DELETE CASCADE set, so expect the database to delete the child records for me." If you don't have such a constraint, then turn off "optimize for cascade delete" تم تعديل 14 مايو 201213 سنة بواسطة miro_aer تقديم بلاغ
بتاريخ: 21 مايو 201213 سنة comment_224791 @ Put the value of primary key for the master Entity Create method @ For the value of the primary key of detail Entity put the value of primary key doDML method Thanks Mohammed Saad تم تعديل 21 مايو 201213 سنة بواسطة meleha2000 تقديم بلاغ
بتاريخ: 22 مايو 201213 سنة كاتب الموضوع comment_224830 @ Put the value of primary key for the master Entity Create method @ For the value of the primary key of detail Entity put the value of primary key doDML method Thanks Mohammed Saad Unknown English تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.