-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 
Author Message
 Post subject: ID-Generation-Problem (Frage) mit Derby 10.1.1.0
PostPosted: Wed Sep 14, 2005 11:22 am 
Newbie

Joined: Mon Dec 13, 2004 4:22 pm
Posts: 6
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?


Top
 Profile  
 
 Post subject:
PostPosted: Thu Sep 15, 2005 3:41 am 
Beginner
Beginner

Joined: Fri May 21, 2004 3:49 pm
Posts: 21
Location: Germany, Mainz
Hi,
zu Frage zwei kann ich dir leider keine Antworten geben, da ich mich mit dem Hibernate Dialect für Derby nicht wirklich auskenne.

Zu 1.
Ja es kann vorkommen, dass du manche Dinge von Hand erstellen musst, dies kannst du aber eigentlich damit umgehen, dass du in deiner ApplicationContext.xml folgenden eintragen in der Datenbank-Konfiguration hinzufügst:
Code:
   <property name="hibernateProperties">
         <props>
            <prop key="hibernate.dialect">
               org.hibernate.dialect.Oracle9Dialect
            </prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.cglib.use_reflection_optimizer">
               false
            </prop>
            <prop key="hibernate.cache.provider_class">
               org.hibernate.cache.HashtableCacheProvider
            </prop>

<prop key="hibernate.hbm2ddl.auto">update</prop>
Code:
      </props>
      </property>
      <property name="dataSource">
         <ref bean="dataSource" />
      </property>
   </bean>


Dann sollte der Data Definition Language Code automatisch erstellt werden.
Hoffe dir geholfen zu haben. Wenigstens ein wenig. :)[/b]


Top
 Profile  
 
 Post subject: Funktioniert leider nicht
PostPosted: Thu Sep 15, 2005 3:51 am 
Newbie

Joined: Mon Dec 13, 2004 4:22 pm
Posts: 6
Hallo,

Danke für die schnelle Antwort. Leider habe ich das schon probiert, ohne Erfolg. Habe auch < ...hibernate.hbm2dll.auto">create-drop</prop>
probiert. Ebenfalls ohne Erfolg.
Habe bei anderen Datenbanken ja gute Erfahrungen mit "hbm2dll" gemacht, aber hier scheints irgendwie zu hakeln.

Vielen Dank,

Jörg Bellmann


Top
 Profile  
 
 Post subject:
PostPosted: Thu Sep 15, 2005 5:13 am 
Beginner
Beginner

Joined: Fri May 21, 2004 3:49 pm
Posts: 21
Location: Germany, Mainz
Bekommst du denn irgendeine Fehlermeldung oder dergleichen, bzw. wie
äußert sich den denn die nicht vorhandenene Funktionsfähig von
auto_generate?


Top
 Profile  
 
 Post subject: Wie folgt...
PostPosted: Thu Sep 15, 2005 4:16 pm 
Newbie

Joined: Mon Dec 13, 2004 4:22 pm
Posts: 6
15.09.2005 22:07:20 org.hibernate.util.JDBCExceptionReporter logExceptions
WARNUNG: SQL Error: -1, SQLState: 42X05
Hibernate: insert into app.Person (first_name, last_name, person_id) values (?, ?, ?)
15.09.2005 22:07:20 org.hibernate.util.JDBCExceptionReporter logExceptions
SCHWERWIEGEND: Die Tabelle 'APP.PERSON' ist nicht vorhanden.
15.09.2005 22:07:20 org.hibernate.util.JDBCExceptionReporter logExceptions

Configuration sieht folgendermaßen aus:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingDirectoryLocations">
<value>classpath:/net/jbellmann/test</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.default_schema">app</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2dll.auto">create</prop>
</props>
</property>
</bean>

Mit "update" sieht es genauso aus.

Keine Ahnung warum das nicht unterstützt wird, oder was falsch ist.

Bis dann.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.