我想将 HSQLDB 用作嵌入式数据库,但无法将其设置为auto-increment。
据我了解,[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>