-->
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.  [ 4 posts ] 
Author Message
 Post subject: Insert problem
PostPosted: Tue Jun 12, 2007 7:44 am 
Newbie

Joined: Tue Jun 12, 2007 7:16 am
Posts: 2
Hallo, ich versuche gerade, mittels Hibernate Personendaten, die in einerm csv-file stehen in eine Datenbank zu schreiben. Zu folgendem Code kommt untenstehende Fehlermeldung, die ich nicht wegbekomme. Hat jemand vielleicht eine Idee, wie ich das lösen könnte?



Code:
personHome = new PersonHome(session);
      person = null;

      try {
         while ((str = breader.readLine()) != null) {
            if (!str.equals("")) {
               try {
                  tx = manager.beginTransaction(session);
               } catch (HibernateException he) {
                  LOG
                        .error(
                              "begin Transaction failed (PersonImport.perform",
                              he);
                  manager.closeSession(session);
                  throw new JobErrorException(
                        "begin Transaction failed (PersonImport.perform",
                        -1);
               }

               String splitted[] = str.split(";");
               var1 = new String(splitted[0].trim());
               var2 = new String(splitted[1].trim());
               var3 = new String(splitted[2].trim());
               var4 = splitted[3].trim();
               var5 = splitted[4].trim();

               person = new Person();
               cty.setId(new Long(a));
               cty.setBla(b);
               cty.setbla2(c);
               

               try {
                  
                  personHome.attachDirty(person);
               } catch (RuntimeException re) {
                  LOG
                        .error(
                              "attachDirty failed (PersonImport.perform)",
                              re);
                  manager.rollbackTransaction(session, tx);
                  throw new JobErrorException(
                        "attachDirty failed (PersonImport.perform)",
                        -4);
               }

               try {
                  
                  manager.commitTransaction(tx);
               } catch (HibernateException he) {
                  LOG
                        .error(
                              "commitTransaction failed (PersonImport.perform)",
                              he);
                  manager.rollbackTransaction(session, tx);
                  throw new JobErrorException(
                        "attachDirty failed (PersonImport.perform)",
                        -6);
               }

               counter++;
            }


Full stack trace of any exception that occurs:

Code:
2007-06-12 13:28:20,172 ERROR [main] (SessionManager.java:137) - commit transaction failed
org.hibernate.PropertyValueException: not-null property references a null or transient value: .Person.key
   at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)
   at org.hibernate.event.def.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:256)
   at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:114)
   at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195)
   at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
   at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
   at *.SessionManager.commitTransaction(SessionManager.java:135)
   at *Person.perform(PersonImport.java:276)
   at *.JobProcessor.<init>(JobProcessor.java:91)
   at *.JobProcessor.main(JobProcessor.java:48)
org.hibernate.PropertyValueException: not-null property references a null or transient value: *.Person.key
   at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)
   at org.hibernate.event.def.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:256)
   at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:114)
   at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195)
   at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
   at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
   at *.SessionManager.commitTransaction(SessionManager.java:135)
   at *.PersonImport.perform(PersonImport.java:276)
   at *.JobProcessor.<init>(JobProcessor.java:91)
   at *.JobProcessor.main(JobProcessor.java:48)
2007-06-12 13:28:20,250 ERROR [main] (PersonImport.java:279) - commitTransaction failed (PersonImport.perform)
org.hibernate.PropertyValueException: not-null property references a null or transient value: *.Person.key
   at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)
   at org.hibernate.event.def.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:256)
   at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:114)
   at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195)
   at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
   at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
   at *.SessionManager.commitTransaction(SessionManager.java:135)
   at *.PersonImport.perform(PersonImport.java:276)
   at *.JobProcessor.<init>(JobProcessor.java:91)
   at *.JobProcessor.main(JobProcessor.java:48)
2007-06-12 13:28:20,250 ERROR [main] (JobProcessor.java:99) - error during execution of job: personImport, errorcode: -6
*: attachDirty failed (PersonImport.perform)
   at *.PersonImport.perform(PersonImport.java:283)
   at *.JobProcessor.<init>(JobProcessor.java:91)
   at *.JobProcessor.main(JobProcessor.java:48)


Wenn ich das manager.commitTransaction(tx); auskommentiere, dann verschwinden zwar die Fehler aber es werden keine Daten in die DB geschrieben. Vielen Dank schon mal für eventeulle Hilfestellungen,
Gruß Basti

DB2


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jun 12, 2007 8:16 am 
Regular
Regular

Joined: Thu Jan 27, 2005 8:58 am
Posts: 80
Code:
org.hibernate.PropertyValueException: not-null property references a null or transient value: .Person.key


Code:
person = new Person();


Nun, der Fehlermeldung und Deinem Quelltext ist zu entnehmen, dass Du das Attribut key aus Person, welches als not-null im Mapping deklariert worden sein muss, nicht gesetzt hast. Ihm fehlt einfach das entsprechende Objekt.

Oder wird das Attribut irgendwo im Hintergrund befüllt? Dann wären die Mappings und der entsprechende Quelltext sehr hilfreich!

_________________
Weise ist nicht, wer viele Erfahrungen macht, sondern wer aus wenigen lernt, viele nicht machen zu müssen. (Karlheinz Deschner)


Last edited by FPC on Tue Jun 12, 2007 9:27 am, edited 1 time in total.

Top
 Profile  
 
 Post subject:
PostPosted: Tue Jun 12, 2007 8:56 am 
Newbie

Joined: Tue Jun 12, 2007 7:16 am
Posts: 2
vielen dank.
key war null gesetzt, muss aber einen wert haben.
habe das ausgebessert und dann hats geklappt.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jun 12, 2007 10:14 am 
Regular
Regular

Joined: Thu Jan 27, 2005 8:58 am
Posts: 80
Mal so als Tipp:
Bei solchen Fehlermeldungen lohnt es sich vor dem Speichern nen Breakpoint zu setzenund sich einmal in Ruhe das Objekt im Debugmodus anzuschauen.

Ich vergesse auch mal gerne ein Attribut zu setzen oder das Objekt welches dort hinterlegt ist und mitgespeichert werden soll ist noch nicht persistent.

_________________
Weise ist nicht, wer viele Erfahrungen macht, sondern wer aus wenigen lernt, viele nicht machen zu müssen. (Karlheinz Deschner)


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