-->
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.  [ 2 posts ] 
Author Message
 Post subject: Java Map -> Datenbank
PostPosted: Sat Sep 03, 2005 8:01 am 
Newbie

Joined: Sat Sep 03, 2005 7:42 am
Posts: 2
Hallo,
ich habe eine Klasse Person und eine Klasse Eerignis (Ereignis ist eine Unterklasse von Information, Information hat noch weitere Unterklassen).
Ein Ereignis besteht hauptsächlich aus einem Datum, einem Ort und einer Notiz.

Person hat ein Attribute

Code:
Map ereignisse;


wobei die Keys Strings sind, die die Art des Ereignisses beschreiben (Geburt, Taufe, Tod, Einschulung, Schulabschluss, ...) und die Values sind Instanzen von Ereignis.

Jetzt möchte ich das ganze in die Datenbank bringen und habe folgende Definitionen

Code:
    <class name="Person" table="personen">
        <id name="id" type="integer">
            <column name="id" />
            <generator class="assigned" />
        </id>
       
        [...]
      
       <map name="ereignisse"
       table="person_ereignis">
      <key column="ind_id"/>
      <map-key column="ereignistyp" type="string"/>
      <one-to-many class="Ereignis"/>
   </map>
      
    </class>

und
Code:
<class name="Information"
     table="informationen" discriminator-value="I">
        <id name="id" type="integer">
            <column name="id" />
            <generator class="native" />
        </id>

   <discriminator column="typ" type="string"/>
       
   <subclass name="Ereignis"
      discriminator-value="E"/>   
         
   </subclass>   
    </class>


Wenn ich eine neue Person erfasse und in die Datenbank saveOrUpdate
möchte, bekomme ich die Exception

Quote:
03.09.2005 12:32:00 org.hibernate.event.def.AbstractFlushingEventListener performExecutions
SCHWERWIEGEND: Could not synchronize database state with session
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: Event
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:216)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:99)
at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:63)
at org.hibernate.persister.collection.AbstractCollectionPersister.writeElement(AbstractCollectionPersister.java:652)
at org.hibernate.persister.collection.AbstractCollectionPersister.recreate(AbstractCollectionPersister.
...


Hat mir jemand eine Idee, wie ich es anders umseten könnte.

In der Dokum habe ich
Code:
<dynamic-component name="userAttributes">
    <property name="foo" column="FOO"/>
    <property name="bar" column="BAR"/>
    <many-to-one name="baz" class="Baz" column="BAZ_ID"/>
</dynamic-component>


gefunden. Aber ich werde daraus nicht so ganz schlau: Was ist da jetzt der Key der Map?

Für einen Tip dankbar ist,
Michael


Top
 Profile  
 
 Post subject:
PostPosted: Sat Sep 03, 2005 5:16 pm 
Beginner
Beginner

Joined: Sun Apr 24, 2005 4:25 am
Posts: 28
Hi versuchs mal hiermit.

Code:
<map name="ereignisse" table="person_ereignis" cascade="all-delete-orphan">
      <key column="ind_id"/>
      <map-key column="ereignistyp" type="string"/>
      <one-to-many class="Ereignis"/>
</map>


Hibernate versucht hier einen Eintrag ereignisse zur Person hinzuzufügen, aber es existiert kein persistentes Objekt.

Gruß

Romsl


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 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.