ibatisでのプライマリ・キーの戻り
Springとibatisの統合後、getSqlMapClientTemplate()メソッドでは一連のCRUDメソッドが提供され、insertはObject型のプライマリ・キーを返し、ずっと正常に使用されていたが、oracleではシーケンスを追加し、プロファイルを変更し、Null PointExceptionを投げ続けた.
DaoやServiceを何度もチェックしても問題ありません(句読点が少ないような小さなエラーを恐れています)、データを追加することもできます.プロファイルの問題だと思います.下のドキュメントをよく見てみると、にはで構成できるシーケンスが含まれています.
修正が終わり、プログラムは大丈夫です.
-------------------------分割線-----------------------------------------------------
使用後にプライマリ・キーを生成するデータベースの場合、MySql、SQLServerプロファイルは
もちろん、PERMISSIONIDフィールドがオートインクリメント属性に設定されていることを前提としている
<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フィールドがオートインクリメント属性に設定されていることを前提としている