iBatis插入语句抛出NPE

时间:2014-10-20 06:33:30

标签: java ibatis ibator

我是iBatis的新手。在我的项目中,我们使用iBatis来保存Oracle DB中的java对象。我有一个类ClassA,它有3列:id,name和description。数据将保留在TableA中。 DB中有一个序列可以为此表中的id列生成值。我们将insert语句写入此表,如下所示,

<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>

这很好。

但是由于我们的内部UI框架限制,我们不得不改变一些设计。因此,我们需要首先从序列生成id long,在ClassA的实例中设置该值以及名称和描述,然后插入到DB中。因此,在这种情况下,插入语句不需要 selectKey 属性。 id 名称描述值位于对象中。当我更新下面的查询时,它会抛出 空指针异常

<insert id="insertTableA" parameterClass="com.ClassA">
    INSERT INTO TableA(ID, NAME, DESCRIPTION) VALUES (#id#, #name#, #description#)
</insert>

我们如何在不使用a的情况下将数据插入表中。我首先从序列生成密钥,使用包括id的所有值填充对象,并尝试从Java调用语句,如下所示,

getSqlTemplate().insert("process.insertTableA", instanceClassA);

欢迎任何指示,

谢谢, SD

1 个答案:

答案 0 :(得分:0)

可以肯定的是,您是否在getId()课程中添加了ClassA方法,以便它返回id字段的值?