0

IBATIS 2.3.4 バージョンを使用しています。データベースは MS SQL Server です。

ID プライマリ列の自動生成値を持つテーブル T_PROFILE にレコードを挿入しようとしています。

私のIBATIS構成は

<insert id="insertProfile" parameterClass="profileDO" useGeneratedKeys="true" keyProperty="profileId">
        INSERT INTO T_PROFILE (E_ID,PROFILE_NAME,DEFAULT_PROFILE)
        VALUES(#eId#, #profileName#, #isDefaultProfile#)

        <selectKey resultClass="java.lang.Long" keyProperty="profileId" >
            SELECT @@IDENTITY AS profileId
        </selectKey>
    </insert>

としてエラーを出しています

Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: org.xml.sax.SAXParseException: Attribute "useGeneratedKeys" must be declared for element type "settings".
    at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:62)
    at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:62)
    at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:55)
    at org.springframework.orm.ibatis.SqlMapClientFactoryBean.buildSqlMapClient(SqlMapClientFactoryBean.java:339)
    ... 160 more
Caused by: org.xml.sax.SAXParseException: Attribute "useGeneratedKeys" must be declared for element type "settings".
4

1 に答える 1

2

データベースにID列が設定されている場合、以下のクエリ自体が機能します。useGeneratedKeys は必要ありません。

 <insert id="insertProfile" parameterClass="profileDO" >
    INSERT INTO T_PROFILE (E_ID,PROFILE_NAME,DEFAULT_PROFILE)
    VALUES(#eId#, #profileName#, #isDefaultProfile#)

    <selectKey resultClass="long" keyProperty="profileId" >
        SELECT @@IDENTITY AS profileId
    </selectKey>
</insert>
于 2013-02-08T12:57:21.947 に答える