-->
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: Herausfinden ob Objekt neu oder detached
PostPosted: Thu Sep 13, 2007 4:23 am 
Regular
Regular

Joined: Wed Nov 01, 2006 2:17 pm
Posts: 78
Hallo Freunde,

wie kann ich denn bitte mithilfe meiner Current Session herausfinden, ob ein mir übergebenes Objekt völlig neu ist oder nur einen "detached"-Status besitzt?

Ich komme aufgrund der generischen Implementierung meines DAOs jedoch NICHT an den Primärschlüssel. Anhand dessen könnte ich schauen, ob er gesetzt ist. Aber diese Möglichkeit habe ich wie gesagt nicht.

Ich möchte zur Laufzeit unterscheiden, ob ich merge oder persist aufrufen muss. Ich möchte NICHT "saveOrUpdate(entity)" verwenden, da ich dann nicht mehr so schön mit Annotationen kaskadieren kann:

Code:
   public E makePersistent(E entity) {
      if (/* entity neu */)
         sessionFactory.getCurrentSession().persist(entity);
      else
         sessionFactory.getCurrentSession().merge(entity);
      
      return entity;
   }


Irgendwelche Ideen?


Top
 Profile  
 
 Post subject:
PostPosted: Thu Sep 13, 2007 5:09 am 
Regular
Regular

Joined: Wed Nov 01, 2006 2:17 pm
Posts: 78
Zur Zeit mache ich das auf diese Art und Weise, was mir eher schmutzig vorkommt, weil ich eine Exception nutze, die geworfen wird, wenn die falsche Methode aufgerufen wird:

Code:
   public E makePersistent(E entity) {
      Session currentSession = sessionFactory.getCurrentSession();
      
      try {
         currentSession.persist(entity);
         logger.debug("Persisted entity");
      } catch (PersistentObjectException ex) {
         currentSession.merge(entity);
         logger.debug("Merged entity");
      }
      
      return entity;
   }


Gibt es vielleicht eine saubere Lösung?


Top
 Profile  
 
 Post subject:
PostPosted: Sat Sep 15, 2007 4:35 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Nicht genau die Antwort auf Deine Frage, aber es gibt Hibernate spezische Cascading Annotations. Mit denen kann man dann auch saveorupdate kaskadieren.

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
 Post subject:
PostPosted: Thu Sep 20, 2007 1:53 pm 
Regular
Regular

Joined: Wed Nov 01, 2006 2:17 pm
Posts: 78
Danke, genau so hab ich es jetzt auch implementiert und es funktioniert. Zwar nicht 100% JPA aber immerhin funktional :D.


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.