2013-12-16 2 views
0

Я пытаюсь добавить запись в таблицу в базе данных, и я получаю NullpointerexceptionNullPointerException при использовании insertRow() АПД

при выполнении оператора вставки с помощью insertRow().

Использование регистра:

В таблице базы данных, что я пытаюсь вставить записи, чтобы она называется someTable.

эта таблица содержит следующие атрибуты: A, B, C, D, E

первичный ключ представляет собой комбинацию из трех полей, которые являются: A, B, C

Я, выполнив следующий код для вставки новой записи в таблице someTable:

AppModuleImpl appModule = (AppModuleImpl)(JSFUtils.getApplicationModule("AppModuleDataControl")); 

    ViewObject someTableVO =appModule.findViewObject("someTableView1");  

    Row row= someTableVO.createRow(); 

    row.setAttribute("A", varable1); 
    row.setAttribute("B", varable2); 
    row.setAttribute("C", varable3); 
    row.setAttribute("D", varable4); 


    someTableVO.insertRow(row); // This statement cause the NullPointerException 

    appModule.getDBTransaction().commit(); 

    someTableVO.executeQuery(); 

Примечание:

  1. Там нет Not Null constrains для первичного ключа, конечно, за исключением того, и я добавляю данные для всех полей первичного ключа, которые являются (A, B и C).

  2. Я не вставляю данные для поданной E, как вы можете видеть, из примера кода выше. Но даже когда я пытался добавить к нему какое-то значение, я все равно получаю такую ​​же ошибку.

  3. Я уверен, что переменные (variable1 ...... variable4) не являются null.

  4. Я получаю правильный вид объекта someTableView1

  5. Я использую ADF с технологией Jdevelopr 11.1.2.3

ответ

0

Проблема решаемая

Я должен проверить строку Befor фиксации следующим образом:

AppModuleImpl appModule = (AppModuleImpl)(JSFUtils.getApplicationModule("AppModuleDataControl")); 
    ViewObject someTableVO =appModule.findViewObject("someTableView1");   


    Row row= someTableVO.createRow(); 

    row.setAttribute("A", variable1); 
    row.setAttribute("B", variable2); 
    row.setAttribute("C", variable3); 
    row.setAttribute("D", variable4); 



    someTableVO.insertRow(row); 

    row.validate();  // This statement solved the problem 

    appModule.getDBTransaction().commit(); 

    someTableVO.executeQuery(); 
0

Есть 2 возможные причины для NullPointerException в этом положении:

  1. someTableVO - NULL. "Doublecheck that you have a view object instance in your datamodel named "someTableView1". It would return null if that were not defined."
  2. Что-то в строке NULL. Ваше описание звучит так, будто вы не уверены, что NPE брошен на someTableVO.insertRow(row) или внутри него. Какова верхняя позиция исходного кода в трассировке стека?

Отладить его и сообщить нам, что такое NULL.

+0

Спасибо, что было полезно. это было вашим вторым моментом, я должен проверить строку перед тем, как совершить другой разумный вариант, который дает исключение нулевого указателя. – Salman

Смежные вопросы