ibatisでのプライマリ・キーの戻り


Springとibatisの統合後、getSqlMapClientTemplate()メソッドでは一連のCRUDメソッドが提供され、insertはObject型のプライマリ・キーを返し、ずっと正常に使用されていたが、oracleではシーケンスを追加し、プロファイルを変更し、Null PointExceptionを投げ続けた.
<insert id="addPermission" parameterClass="Permission">
		INSERT INTO P_PERMISSION
		(PERMISSIONID,PERMISSIONINFO,PERMISSIONNAME,PERMISSIONENNAME,URL)
		VALUES
		(SEQ_P_PERMISSION.NEXTVAL,#permissionInfo#,#permissionName#,
                 #permissionEnName#,#url#)
</insert>

DaoやServiceを何度もチェックしても問題ありません(句読点が少ないような小さなエラーを恐れています)、データを追加することもできます.プロファイルの問題だと思います.下のドキュメントをよく見てみると、にはで構成できるシーケンスが含まれています.
<insert id="addPermission" parameterClass="Permission">
		<selectKey resultClass="int" keyProperty="permissionId">
			SELECT SEQ_P_PERMISSION.NEXTVAL FROM DUAL
		</selectKey>
		INSERT INTO P_PERMISSION
		(PERMISSIONID,PERMISSIONINFO,PERMISSIONNAME,PERMISSIONENNAME,URL)
		VALUES
		(#permissionId#,#permissionInfo#,#permissionName#,#permissionEnName#,#url#)
	</insert>

修正が終わり、プログラムは大丈夫です.
-------------------------分割線-----------------------------------------------------
使用後にプライマリ・キーを生成するデータベースの場合、MySql、SQLServerプロファイルは
<insert id="addPermission" parameterClass="Permission">
		
		INSERT INTO P_PERMISSION
		(PERMISSIONID,PERMISSIONINFO,PERMISSIONNAME,PERMISSIONENNAME,URL)
		VALUES
		(#permissionId#,#permissionInfo#,#permissionName#,#permissionEnName#,#url#)
        <selectKey resultClass="int" keyProperty="permissionId">
			SELECT @@IDENTITY AS PERMISSIONID
		</selectKey>	
</insert>

もちろん、PERMISSIONIDフィールドがオートインクリメント属性に設定されていることを前提としている