-->
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.  [ 3 posts ] 
Author Message
 Post subject: Dublizieren von Entitäten bzw. Datensatz
PostPosted: Thu Nov 22, 2007 10:49 am 
Newbie

Joined: Wed Jun 06, 2007 8:09 am
Posts: 14
Location: Germany
Hallo,

ich möchte gernen einen Datensatz dublizieren. Wie geht das? Hier mein Versuch:

Code:
public void pfadLeistungenUebernehmen(PatientPfadReferenz patientPfadReferenz ){
      
      Iterator iterator = this.pfad.getPfadLeistungList().iterator();
      while(iterator.hasNext()){
         PfadLeistungReferenz curPfadLeistungReferenz=(PfadLeistungReferenz)iterator.next();
         // curPfadLeistungReferenz soll dubliziert werden.
         patientPfadReferenz.addLeistung(curPfadLeistungReferenz);
         // wird aber nur die Referenz geändert und kein neuer Datesatz für curPfadLeistungReferenz angelegt.
      }
   }


Code:
package prozessManager.domain.patient;

import ...


@Entity
@Table(name = "PatientPfad")
public class PatientPfadReferenz {
   private Long id;
   private Pfad pfad;
   private Patient patient;
   private String aufnahmeDatum;
   private Set<PfadLeistungReferenz> pfadLeistungReferenz = new LinkedHashSet<PfadLeistungReferenz>();
   

   public String getAufnahmeDatum() {
      return aufnahmeDatum;
   }

   public void setAufnahmeDatum(String aufnahmeDatum) {
      this.aufnahmeDatum = aufnahmeDatum;
   }

   @ManyToOne
   @JoinColumn(name="patient_fk")
   public Patient getPatient() {
      return patient;
   }

   public void setPatient(Patient patient) {
      this.patient = patient;
   }

   
   @Id @GeneratedValue(strategy=GenerationType.AUTO)
   public Long getId() {
      return id;
   }
   public void setId(Long id) {
      this.id = id;
   }
   @ManyToOne
   @JoinColumn(name="pfad_fk")
   public Pfad getPfad() {
      return pfad;
   }

   public void setPfad(Pfad pfad) {
      this.pfad = pfad;
   }
   
   @OneToMany(mappedBy="patientPfadReferenz", cascade=CascadeType.ALL,fetch=FetchType.EAGER)
   public Set<PfadLeistungReferenz> getPfadLeistungReferenz() {
      return pfadLeistungReferenz;
   }

   public void setPfadLeistungReferenz(
         Set<PfadLeistungReferenz> pfadLeistungReferenz) {
      this.pfadLeistungReferenz = pfadLeistungReferenz;
   }
   
   public void addLeistung (PfadLeistungReferenz pfadLeistungReferenz){
      this.pfadLeistungReferenz.add(pfadLeistungReferenz);
      pfadLeistungReferenz.setPatientPfadReferenz(this);
      
   }
   
   public void removeLeistung (PfadLeistungReferenz pfadLeistungReferenz){
      this.pfadLeistungReferenz.remove(pfadLeistungReferenz);
      pfadLeistungReferenz.setPatientPfadReferenz(null);
      
   }
   
}

Hibernate version:3

Mapping documents: Annotations

Code between sessionFactory.openSession() and session.close():

public class HibernateUtil {

private static ThreadLocal<Session> currentSession = new ThreadLocal<Session>();

public static void setCurrentSession(Session session) {
currentSession.set(session);
}

public static Session getCurrentSession() {
return currentSession.get();
}

private static boolean recreateDB = false;

public static void setRecreateDB(boolean recreateDB) {
HibernateUtil.recreateDB = recreateDB;
}

public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
sessionFactory = sessionFactory("hibernate.cfg.xml");
}
return sessionFactory;
}

private static SessionFactory sessionFactory = null;

private static SessionFactory sessionFactory(String configurationFileName) {
try {
AnnotationConfiguration annotationConfiguration =
new AnnotationConfiguration()
.addAnnotatedClass(Test.class)
.addAnnotatedClass(Pfad.class)
.addAnnotatedClass(Krankheitsbild.class)
.addAnnotatedClass(KrankheitsbildPfadReferenz.class)
.addAnnotatedClass(KrankheitsbildDiagnoseReferenz.class)
.addAnnotatedClass(Diagnose.class)
.addAnnotatedClass(Leistung.class)
.addAnnotatedClass(PfadLeistungReferenz.class)
.addAnnotatedClass(PfadLeistungBeteiligteOrganisationseinheitReferenz.class)
.addAnnotatedClass(PfadLeistungSachmittelReferenz.class)
.addAnnotatedClass(Patient.class)
.addAnnotatedClass(LeistungTyp.class)
.addAnnotatedClass(Organisationseinheit.class)
.addAnnotatedClass(Sachmittel.class)
.addAnnotatedClass(Mandant.class)
.addAnnotatedClass(Aufgabe.class)
.addAnnotatedClass(Projekt.class)
.addAnnotatedClass(ProjektAufgabeReferenz.class)
.addAnnotatedClass(ProjektAufgabeBeteiligteOrganisationseinheitReferenz.class)
.addAnnotatedClass(PatientPfadReferenz.class)
;

if (recreateDB) annotationConfiguration.setProperty("hibernate.hbm2ddl.auto", "create");
annotationConfiguration.configure();
return annotationConfiguration.buildSessionFactory();
} catch (Throwable ex){
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}

}



Name and version of the database you are using:MySQL 5.0


Top
 Profile  
 
 Post subject: http://forum.hibernate.org/viewtopic.php?p=2369817#2369817
PostPosted: Fri Nov 23, 2007 6:20 am 
Newbie

Joined: Wed Jun 06, 2007 8:09 am
Posts: 14
Location: Germany
Da ich bisher noch keine Antwort erhalten habe, habe ich das Problem noch etwas genauer beschrieben - allerdings im Englischen Forum:
[url]
http://forum.hibernate.org/viewtopic.ph ... 17#2369817[/url]


Top
 Profile  
 
 Post subject: Duplizieren von Entities
PostPosted: Wed Nov 28, 2007 4:01 am 
Newbie

Joined: Fri Nov 16, 2007 10:42 am
Posts: 6
Hallo,

Wenn ich das richtig verstehe, möchtest du eine persistente Entity duplizieren (im Sinne von "klonen") und die duplizierte als neuen Datensatz abspeichern können?
Ich habe das gleiche Problem gehabt. Nach ein wenig googlen habe ich den "HibernateBeanReplicator" im Projekt "beanlib" gefunden. Das sollte dein Problem mit relativ wenig Aufwand lösen. Der Replicator erzeugt ein neues POJO aus einer Hibernate Bean und initialisiert dabei auch alle Lazy-Collections.

Kurze Anleitung: http://hansonchar.blogspot.com/2005/06/ ... rnate.html

Beanlib: http://sourceforge.net/projects/beanlib


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