Я новичок в iBatis. В моем проекте мы используем iBatis для сохранения объектов Java в Oracle DB. У меня есть класс ClassA, который имеет 3 столбца: идентификатор, имя и описание. Данные будут сохранены в таблице A. В БД есть последовательность для генерации значения для столбца id в этой таблице. Мы написали оператор вставки в эту таблицу следующим образом:
<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 вместе с именем и описанием, а затем вставить в БД. Таким образом, в этом случае статус вставки не нуждается в атрибуте selectKey. Значения id, name и description находятся в объекте. Когда я обновил запрос, как показано ниже, он выдает Исключение нулевого указателя.
<insert id="insertTableA" parameterClass="com.ClassA">
INSERT INTO TableA(ID, NAME, DESCRIPTION) VALUES (#id#, #name#, #description#)
</insert>
Как мы можем вставить данные в таблицу без использования файла . Сначала я генерирую ключ из последовательности, заполняю объект всеми значениями, включая идентификатор, и пытаюсь вызвать оператор из Java следующим образом:
getSqlTemplate().insert("process.insertTableA", instanceClassA);
Любые указатели приветствуются,
Спасибо, СД