N
NooB1990
Gast
Hallo zusammen,
Ich lese mich grad in Hibernate ein und habe ein paar Fragen.
Ich habe eine Klasse Person und Event und dazu ein hbm.xml file
Ich möchte mehrere Events ind der Klasse person auf nehmen
in dem hibernate tutorial ist nur beschrieben wie es mit einem Set geht ich würde aber gerne eine Liste haben
das hier hab ich versucht geht aber nicht
er sagt den befehl list kennt er nicht... Weiß jemand wie die richtige syntay lautet??
Dann hab ich die ganze Sache mit Annotiations versucht
da hab ich ich ein paar Fragen zu den Beziehungen...
1. was genau macht das mappedBy??
Und wo wurde der foreign key festgelegt??
Beispiel:
2. zu der JoinTabelle
Was macht des CascadeType ???
Also ich habe jetzt doch eine Join tabelle angelegt, die PERSON_EVENT heißt und
2 Spalten hat (person_id und event_id)
so jetzt hab ich eine methode geschrieben
warum kann eine person mehrmals das gleiche event bekommen????
wenn ich das hier 5 aufrufe addPersonToEvent(new Long(1), new Long(1));
hat die person 1 5 * das event 1
warum normal sollte das nicht gehen weil in der JOIN_TABELLE der zusammen gesetzte Schlüssel doch die beiden pk von person und event sind oder?
danke schonmal im vorraus :###
Ich lese mich grad in Hibernate ein und habe ein paar Fragen.
Ich habe eine Klasse Person und Event und dazu ein hbm.xml file
Ich möchte mehrere Events ind der Klasse person auf nehmen
in dem hibernate tutorial ist nur beschrieben wie es mit einem Set geht ich würde aber gerne eine Liste haben
das hier hab ich versucht geht aber nicht
Code:
<list name="events" table="PERSON_EVENT">
<key column="PERSON_ID"/>
<many-to-many column="EVENT_ID" class="event.Event"/>
</list>
public List<Event> getEvents()
{...
}
Dann hab ich die ganze Sache mit Annotiations versucht
Code:
@Entity@Table(name="PERSON")
public class Person {
private Long id;
private List<Event> events = new ArrayList<Event>();
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
name="PERSON_EVENT",
joinColumns = @JoinColumn( name="person_id"),
inverseJoinColumns = @JoinColumn( name="event_id")
)
public List<Event> getEvents() {
return events;
}
@Id@GeneratedValue
public Long getId() {
return id;
}
da hab ich ich ein paar Fragen zu den Beziehungen...
1. was genau macht das mappedBy??
Und wo wurde der foreign key festgelegt??
Beispiel:
Code:
@Entity
public class Troop {
@OneToMany(mappedBy="troop")
public Set<Soldier> getSoldiers() {
...
}
@Entity
public class Soldier {
@ManyToOne
@JoinColumn(name="troop_fk")
public Troop getTroop() {
...
}
2. zu der JoinTabelle
Code:
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
name="PERSON_EVENT",
joinColumns = @JoinColumn( name="person_id"),
inverseJoinColumns = @JoinColumn( name="event_id")
)
public List<Event> getEvents() {
return events;
}
Was macht des CascadeType ???
Also ich habe jetzt doch eine Join tabelle angelegt, die PERSON_EVENT heißt und
2 Spalten hat (person_id und event_id)
so jetzt hab ich eine methode geschrieben
Code:
private void addPersonToEvent(Long personId, Long eventId) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Person aPerson = (Person) session.load(Person.class, personId);
Event anEvent = (Event) session.load(Event.class, eventId);
aPerson.getEvents().add(anEvent);
session.getTransaction().commit();
}
warum kann eine person mehrmals das gleiche event bekommen????
wenn ich das hier 5 aufrufe addPersonToEvent(new Long(1), new Long(1));
hat die person 1 5 * das event 1
warum normal sollte das nicht gehen weil in der JOIN_TABELLE der zusammen gesetzte Schlüssel doch die beiden pk von person und event sind oder?
danke schonmal im vorraus :###