الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

(Oracle.jbo.dmlexception) Jbo-26041: Failed To Post Data

Featured Replies

بتاريخ:

السلام عليكم
I have tow entities and there is a master-detail relation ship between them

The 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

اية حل المشكلة دى

post-2550-0-01999300-1336562816_thumb.jpg

post-2550-0-96470500-1336562821_thumb.jpg

تم تعديل بواسطة tarek_fathi

بتاريخ:

هذه مشكلة معروفة لأن العلاقة Master Detail لكي تعمل بشكل سليم فيجب أن يكون الـ master PK له قيمة ، ولذلك عندما تقوم بحفظ الـ Master ثم الإدخال في الـ detail فلا توجد مشكلة وحلها بسيط عن طريق إدخال قيمة الـ foreign key لتساوي قيمة الـ PK داخل doDML

بتاريخ:
  • كاتب الموضوع

شكرا جزيلا يا بشمهندس . بس ممكن لو سمحت مثال توضيحي اكتب اية فى الميثود doDml

بتاريخ:

setBtrId((Number)ADFUtils.findIterator("iteratorName").getCurrentRow().getAttribute("Id");//change values

بتاريخ:

المفترض انها تشتغل مظبوط طالما انك بتستخدم 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);
}

تم تعديل بواسطة miro_aer

بتاريخ:
  • كاتب الموضوع

السلام عليكم
اسف على تاخرى عن الرد بسبب ظروف مرضية

انا جربت الحل الاول بتاع بشمهندس مصطفى و ظهرلى الخطا دة

(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


اما بالنسبة للحل الانى بتاع ميرو فلما جيت انقل الكود ظهرلى انه كله خطأ كما فى الصورة

post-2550-0-14403300-1336889290_thumb.jpg

بتاريخ:
  • كاتب الموضوع

السلام عليكم
انا جربت ابعت القيمة بتاعة ال 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 صح

بتاريخ:

السلام عليكم
اسف على تاخرى عن الرد بسبب ظروف مرضية

انا جربت الحل الاول بتاع بشمهندس مصطفى و ظهرلى الخطا دة
(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
بتاريخ:
  • كاتب الموضوع


السلام عليكم
اسف على تاخرى عن الرد بسبب ظروف مرضية

انا جربت الحل الاول بتاع بشمهندس مصطفى و ظهرلى الخطا دة
(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 لا يزال موجود
بتاريخ:
  • كاتب الموضوع

انا كان عندى 2 entities تانيين بينهم master-detail و شغالين كويس بدون مشاكل و هما خاصصين ببدل تعليم للموظف
فلما قارنت بينهم و بين دول - اللى هما بدل تذاكر - لقيت حاجة غريبه
لقيت ال PK اللى فى الماستر بتاع بدل التعليم اللى هو شغال كويس بدون مشاكل مختلف عن ال PK بتاع بدل التذاكر اللى فى المشكلة
و الاختلاف كان فى اكتر من حاجة كما فى الصور المرفقة

فمثلا هتلاقى persistent معملوله disable و هتلاقى كمان فى فى الاخر كدة tab فيها database column و sequence

post-2550-0-07815200-1336975346_thumb.gif

post-2550-0-97150300-1336975369_thumb.jpg

بتاريخ:
  • كاتب الموضوع

غيرت ال DBSequence الى oracle.jbo.domian.DBSequence و عملت run لقيتها اشتغلت كويس جدا و بيحفظ الماستر و الديتيل فى نفس الوقت

الحمد لله المشكلة يظهر و الله اعلم ان فى كلاس تانية اسمها DBSequence موجود فى باكج تانية

بتاريخ:

انا راجعت الصور اللى انت حطيتها فى اول الموضوع ولقيتك بتستخدم فى Association
implement cascade delete
cascade update
السؤال هنا هل انت عامل enable للكلام ده فى قاعدة البيانات لأن الاختيارات دى مش بتشتغل الا لما تكون عامل cascade delete و cascade update للجداول دى فى قاعدة البيانات
فلو انت مش عامل enable فى قاعدة البيانات .. يجب عليك انك لاتقوم باختيارهما :)
http://docs.oracle.com/cd/E12839_01/web.1111/b31974/bcentities.htm#BABHFJFJ

بتاريخ:

غيرت ال DBSequence الى oracle.jbo.domian.DBSequence و عملت run لقيتها اشتغلت كويس جدا و بيحفظ الماستر و الديتيل فى نفس الوقت

الحمد لله المشكلة يظهر و الله اعلم ان فى كلاس تانية اسمها DBSequence موجود فى باكج تانية

:D
بتاريخ:
  • كاتب الموضوع

انا راجعت الصور اللى انت حطيتها فى اول الموضوع ولقيتك بتستخدم فى Association
implement cascade delete
cascade update
السؤال هنا هل انت عامل enable للكلام ده فى قاعدة البيانات لأن الاختيارات دى مش بتشتغل الا لما تكون عامل cascade delete و cascade update للجداول دى فى قاعدة البيانات
فلو انت مش عامل enable فى قاعدة البيانات .. يجب عليك انك لاتقوم باختيارهما :)
http://docs.oracle.c...es.htm#BABHFJFJ

انا مأخدتش بالى من الحكاية دى
دياما بنستفاد منك يا باشا
جزاك الله خيرا :)
بتاريخ:

انا راجعت الصور اللى انت حطيتها فى اول الموضوع ولقيتك بتستخدم فى Association
implement cascade delete
cascade update
السؤال هنا هل انت عامل enable للكلام ده فى قاعدة البيانات لأن الاختيارات دى مش بتشتغل الا لما تكون عامل cascade delete و cascade update للجداول دى فى قاعدة البيانات
فلو انت مش عامل enable فى قاعدة البيانات .. يجب عليك انك لاتقوم باختيارهما :)
http://docs.oracle.c...es.htm#BABHFJFJ

تصحيح لكلامى..... حصل عندى خلط فى optimize For DataBase cascade delete
When selected, this option allows the composing entity object to be removed
unconditionally together with any composed children entities. If the related Optimize
for Database Cascade Delete option is deselected, then the composed entity objects
perform their normal DELETE statement at transaction commit time to make the
changes permanent. If the option is selected, then the composed entities do not
perform the DELETE statement on the assumption that the database ON DELETE
CASCADE 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"

تم تعديل بواسطة miro_aer

بتاريخ:

@ 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

تم تعديل بواسطة meleha2000

بتاريخ:
  • كاتب الموضوع

@ 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



:lol:
Unknown English

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.