iBatis插入语句抛出NPE

问题描述 投票:0回答:1

我是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中。因此,在这种情况下,insert语句不需要selectKey属性。 id,name和description值在对象中。当我更新下面的查询时,它会抛出Null Pointer Exception。

<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

java ibatis ibator
1个回答
0
投票

只是为了确定,你是否在getId()类中包含了ClassA方法,以便它返回id字段的值?

© www.soinside.com 2019 - 2024. All rights reserved.