Я хочу использовать HSQLDB в качестве встроенной базы данных, но у меня возникают проблемы с получением автоинкремента .
Насколько я понимаю, [CALL] IDENTITY()
может использоваться для получения последнего значения первичного ключа. Однако эксперименты на iBatis и HSQLDB DatabaseManagerSwing
постоянно возвращают значение 0.
Как настроить автоинкремент для работы с HSQLDB?
Edit:
Я не упомянул, что я использую 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>