Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version: 3.0.5
Mapping documents:
<hibernate-mapping>
<class name="net.jbellmann.test.Person">
<id name="id" column="person_id" type="java.lang.Long" unsaved-value="null">
<generator class="native"/>
</id>
<property
name="firstName"
type="java.lang.String"
column="first_name"
update="true"
insert="true"/>
<property
name="lastName"
type="java.lang.String"
column="last_name"
update="true"
insert="true"/>
</class>
</hibernate-mapping>
Code between sessionFactory.openSession() and session.close():
BenutzeSpring 1.2.4 und DAOSupport (weniger Code neu zu schreiben) :-)
Full stack trace of any exception that occurs: No Exception
Name and version of the database you are using: Derby 10.1.1.0
The generated SQL (show_sql=true):
Hibernate: insert into Person (first_name, last_name, person_id) values (?, ?, ?)
Debug level Hibernate log excerpt: info ? ist default oder?
Nun, dann jetzt mal die Fragen:
1. Wenn ich "native" bei der "id" angebe (siehe Mapping-File) wird eine Tabelle "hibernate_uniqe_key" benötigt. Diese wird aber nicht selbständig angelegt. Ich musste sie von Hand anlegen. Machte ich etwas falsch?
2. Die Id´s die für die Ojbekte (hier Person) generiert werden beginnen nicht bei 1. In der Tabelle "hibernate_unique_key" wird in der spalte "next_hi" zwar mit 1 begonnen und auch in 1-er Schritten hochgezählt, aber in der Spalte PERSON_ID der Tabelle "PERSON" steht folgendes:
PERSON_ID FIRST_NAME LAST_NAME
196608 Test Testermann
196609 Test Testermann
196610 Test Testermann
196611 Test Testermann
196612 Test Testermann
196613 Test Testermann
196614 Test Testermann
196615 Test Testermann
196616 Test Testermann
(naja, bisschen verschoben, aber erkennbar)
Warum beginnen die ID`s hier nicht mit 1?
Die Spalte "next_hi" ist vom typ "int" :
create table "PETER"."HIBERNATE_UNIQUE_KEY" ("NEXT_HI" int not null);
Bei anderen Datenbanken konnte ich dies nicht beobachten. Aber die verwenden vielleicht andere Mechanismen.
Könnte jemand erklären, warum es so läuft und worauf bei Derby vielleicht zu achten ist?