Auto-Inkrementierung mit HSQLDB (2.2.8) + DDLUtils
Will ich mit HSQLDB als eingebettete Datenbank, aber ich habe Mühe, es zu auto-Inkrement -.
Soweit ich das verstanden habe, [CALL] IDENTITY()
können verwendet werden, um den letzten Wert des Primärschlüssels. Allerdings Experimente sowohl durch iBatis und HSQLDB ist DatabaseManagerSwing
immer wieder ein 0-Wert.
Wie kann ich die auto-Inkrementierung für die Arbeit mit HSQLDB?
Edit:
Ich nicht erwähnen, dass ich mit DDLUtils zur automatischen Generierung von Tabellen. Die folgenden nicht Anzug 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>
Auch hier ist die iBatis SQL-Karte verwendet werden, für die domain-Klasse:
<insert id="insertUser" parameterClass="user">
<selectKey keyProperty="id" resultClass="int">
CALL IDENTITY()
</selectKey>
INSERT INTO USERS
( USERNAME, PASSWORD )
VALUES
( #username#, #password#)
</insert>
- Welche version von HSQLDB, die Sie benutzen?
- Es 2.2.8 das ist wohl die neueste.
- Dies könnte die Quelle des Problems: stackoverflow.com/questions/4857730/...
- Eine andere Frage im Zusammenhang: stackoverflow.com/questions/5456742/...
- Sie haben verbindungen mit Apache? Das Problem hatte einfach damit zu tun, wie die Tabelle generiert wurde, durch DDLUtils.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Beispiel, druckt
auf meinem Rechner:
GENERATED ALWAYS AS IDENTITY
. Ich habe nicht erwähnt, dass ich mit Apache DDLUnit um die Tabellen zu erzeugen automatisch über XML. Ich werde suchen einen anderen Rahmen für diesen Zweck.Wenn Sie eine ORM, die identity-Spalte für Sie arbeiten. sormula macht es einfach, mit einer Anmerkung. Siehe org.sormula.tests.identity-Paket innerhalb des Projekts für die Beispiele.
Row-Klasse definiert:
Vom org.sormula.Identität.tests.InsertTest:
HSQLDB ist in die Untersuchungen einbezogen.