HSQLDBを組み込みデータベースとして使用したいが、自動インクリメントに問題があります。HSQLDB(2.2.8)+ DDLUtilsによる自動インクリメント
私が理解する限り、[CALL] IDENTITY()
を使用して、最後の主キー値を取得できます。しかし、iBatisとHSQLDBのDatabaseManagerSwing
の両方を使った実験では、常に0の値が返されます。
HSQLDBで自動インクリメントを使用するにはどうすればよいですか?
編集:
私は、テーブルを自動生成するDDLUtilsを使用していることに言及しませんでした。次はスーツHSQLDBしません:
<?xml version="1.0"?>
<!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database.dtd">
<database name="testdb">
<table name="users">
<!-- using autoincrement attribute below causes
"primary key already exists" exception -->
<column name="id" type="INTEGER" primaryKey="true" />
<column name="username" type="VARCHAR" size="30" />
<column name="password" type="VARCHAR" size="100" />
</table>
</database>
はまた、ここではドメインクラスで使用iBatisのSQLマップです:
<insert id="insertUser" parameterClass="user">
<selectKey keyProperty="id" resultClass="int">
CALL IDENTITY()
</selectKey>
INSERT INTO USERS
(USERNAME, PASSWORD)
VALUES
(#username#, #password#)
</insert>
どのようなバージョンのHSQLDBを使用しますか? –
@EmmanuelBourgおそらく最新の2.2.8です。 –
これは問題の原因かもしれません:http://stackoverflow.com/questions/4857730/how-to-fix-hsql-datasource-txm-where-identity-always-return-0 –