Hallo!,
ich bin Hibernate Neuling und habe schwirigkeiten die Entitys richtig zu erstellen und zu assoziieren, es geht immer Information verloren, gebt mir mal einen Tip, 🙂
danke!
Also, Ich habe folgende Textdateien:
Meeting.txt (MEETING_ID, TITEL)
Personen.txt (PERSON_ID, NAME)
Als Ergebnis hätte ich gerne einen kompletten Join, ungefähr:
jetzt mein Code:
Viele Gruesse
ich bin Hibernate Neuling und habe schwirigkeiten die Entitys richtig zu erstellen und zu assoziieren, es geht immer Information verloren, gebt mir mal einen Tip, 🙂
danke!
Also, Ich habe folgende Textdateien:
Meeting.txt (MEETING_ID, TITEL)
Code:
1 Tee trinken 1
1 Tee trinken 2
1 Tee trinken 3
2 lecker Kuchen 1
2 lecker Kuchen 2
3 Billiard 2
3 Billiard 3
Personen.txt (PERSON_ID, NAME)
Code:
1 Gerber
2 Bernd
3 Fischer
4 Moeller
5 Krueger
Als Ergebnis hätte ich gerne einen kompletten Join, ungefähr:
Code:
1 Gerber 1 Tee trinken
1 Gerber 2 lecker Kuchen
2 Bernd 1 Tee trinken
2 Bernd 2 lecker Kuchen
2 Bernd 3 Billiard
3 Fischer 1 Tee trinken
3 Fischer 3 Billiard
4 Moeller null null
5 Krueger null null
jetzt mein Code:
Java:
package hibernatetest;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity()
@Table(name="PERSON")
public class Person implements Serializable {
@Id
//@GeneratedValue(strategy= GenerationType.AUTO)
@Column(name="PERSON_ID", unique=true)
private long id;
@Column(name="NAME")
private String name;
@ManyToMany()
@JoinColumn(name="PERSON_ID")
private Set<Meeting> meetings;
public Person(long id, String name, Set<Meeting> meetings) {
this.id = id;
this.name = name;
this.meetings = meetings;
}
// [...] Getter und Setter
public void addMeeting(Meeting meet) {
if(meetings == null) {
meetings = new HashSet<Meeting>();
}
meetings.add(meet);
}
Java:
package hibernatetest;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
@Entity()
@Table(name="MEETING")
public class Meeting implements Serializable {
@Id
//@GeneratedValue(strategy= GenerationType.AUTO)
@Column(name="MEETING_ID",unique=true)
private long id;
@Column(name="TITEL")
private String titel;
@ManyToMany
@JoinColumn(name="PERSON_ID")
private Set<Person> persons;
public Meeting() {
}
public Meeting(long id, String titel, Set<Person> persons) {
this.id = id;
this.titel = titel;
this.persons = persons;
}
// [...] Getter und Setter
public void addPerson(Person p) {
if(persons == null) {
persons = new HashSet<Person>();
}
persons.add(p);
}
Java:
package hibernatetest.dau;
import hibernatetest.HibernateUtil;
import hibernatetest.Meeting;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class MeetingDAU {
public void createMeeting(Meeting m) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction transaction = session.beginTransaction();
session.saveOrUpdate(m);
transaction.commit();
}
}
Java:
package hibernatetest.dau;
import hibernatetest.HibernateUtil;
import hibernatetest.Person;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class PersonDAU {
public void createPerson(Person p) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction transaction = session.beginTransaction();
session.saveOrUpdate(p);
transaction.commit();
}
}
Java:
package DataIO;
import hibernatetest.HibernateUtil;
import hibernatetest.Meeting;
import hibernatetest.Person;
import hibernatetest.dau.MeetingDAU;
import hibernatetest.dau.PersonDAU;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hibernate.Session;
public class DataImport {
public static void read(File f, Class bean) {
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream(f)));
String line = "";
while ((line = br.readLine()) != null) {
String[] fields = line.split("\t");
if(bean.equals(Person.class)) {
Person p = new Person(Long.parseLong(fields[0]), fields[1], null);
new PersonDAU().createPerson(p);
} else if (bean.equals(Meeting.class)) {
Meeting m = new Meeting(Long.parseLong(fields[0]), fields[1], null);
if (fields[2] != null && !fields[2].equals("")) {
Long personID = Long.parseLong(fields[2]);
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Person p;
if ((p = (Person) session.get(Person.class, personID)) != null) {
m.addPerson(p);
session.flush();
}
}
new MeetingDAU().createMeeting(m);
}
}
} catch (IOException ex) {
Logger.getLogger(DataImport.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Viele Gruesse
Zuletzt bearbeitet: