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