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: