Я новичок в iBatis. В моем проекте мы используем iBatis для сохранения объектов Java в Oracle DB. У меня есть класс ClassA, который имеет 3 столбца: id, имя и описание. Данные будут сохранены в TableA. В базе данных есть последовательность для генерации значения для столбца id в этой таблице. Мы написали заявление о включении в эту таблицу следующим образом:iBatis insert statement throwing NPE
<insert id="insertTableA" parameterClass="com.ClassA">
<selectKey resultClass="java.lang.Long" keyProperty="id">
SELECT seq_TableA.nextval as id FROM dual
</selectKey>
INSERT INTO TableA(ID, NAME, DESCRIPTION) VALUES (#id#, #name#, #description#)
</insert>
Это работало нормально.
Но из-за нашего внутреннего ограничения интерфейса пользовательского интерфейса нам пришлось изменить какой-то дизайн. Поэтому нам нужно сначала генерировать идентификатор длиной из последовательности, установить это значение в экземпляре ClassA вместе с именем и описанием, а затем вставить в DB. Таким образом, в этом случае элемент вставки не нуждается в атрибуте selectKey. id, имя и Описание значения находятся в объекте. Когда я обновил запрос, как показано ниже, он метает Исключение нулевого указателя.
<insert id="insertTableA" parameterClass="com.ClassA">
INSERT INTO TableA(ID, NAME, DESCRIPTION) VALUES (#id#, #name#, #description#)
</insert>
Как мы можем вставлять данные в таблицу без использования. Я генерации ключа из последовательности первых, заполнить объект со всеми значениями, включая идентификатор и пытается вызвать заявление от Java следующим образом,
getSqlTemplate().insert("process.insertTableA", instanceClassA);
Все указатели приветствуются,
Спасибо, SD