Hibernate Zwischentabelle

Generic1

Top Contributor
Hallo,

bin gerade dabei, eine @ManyToMany OR zu machen und klappt bis jetzt ganz gut, das einzige Problem was ich noch habe ist, dass in der Zwischentabelle (EMPLOYER_EMPLOYEE) nichts eingetragen wird.
Ich habe bis jetzt noch keine @Entity- Klasse für die Zwischentabelle erstellt.
Meine Frage wäre jetzt, ob ich so eine @Entity- Klasse auch für diese Zwischentabelle brauche?
Besten Dank!
lg


Java:
@Entity

public class Employer implements Serializable {

    @ManyToMany(
        targetEntity=org.hibernate.test.metadata.manytomany.Employee.class,
        cascade={CascadeType.PERSIST, CascadeType.MERGE}
    )
    @JoinTable(
        name="EMPLOYER_EMPLOYEE",
        joinColumns=@JoinColumn(name="EMPER_ID"),
        inverseJoinColumns=@JoinColumn(name="EMPEE_ID")
    )
    public Collection getEmployees() {
        return employees;
    }
    ...
}
 
Du brauchst keine Entity für die Jointable

Also ich mach die Annotations zwar immer auf die Fields, aber des sollte eigentlich keinen Unterschied machen.
Versuche mal List<Employee> statt Collection, wobei ich mir eigentlich auch nicht vorstellen kann dass es daran liegt.

Ansonsten seh ich da auf anhieb nix. Wie sieht denn das Gegenstück aus (also Employee)?
Hast du überhaupt Employees deinem Employer geaddet?
 
Hallo nochmal,

in meinem Fall schauts so aus, Ich habe 2 Entities, Event und Participant und diese 2 Entities sind @ManytoMany verbunden.
Unten füge ich dann einen Event zu einem Participant hinzu.
Vielleicht sieht jemand, was da falsch ist, ich bekomme keine Fehlermeldung, es wird ein Event und ein Participant in die DB- Tabelle eingefügt, in der Zwischentabelle TEvent_TParticipant wird aber nichts eingefügt.
Besten Dank!
lg



Entity (Klasse) Event:
Java:
@Entity
@SuppressWarnings("serial")
@Table(name="TEvent")
public class Event implements Serializable {

    private Integer pk_event;
    private String eventname;
    private Collection<Participant> participants;
...
@ManyToMany(
        targetEntity=at.eventtiming.domain.Participant.class,
        cascade={CascadeType.PERSIST, CascadeType.MERGE})
    @JoinTable(
        name="TEvent_TParticipant",
        joinColumns=@JoinColumn(name="id_event"),
        inverseJoinColumns=@JoinColumn(name="id_part")
        )
    public Collection<Participant> getParticipants() {
        return participants;
        }

    public void setParticipants(final Collection<Participant> participants) {
        this.participants = participants;
        }


Entity (Participant) Klasse:
Java:
@Entity
@SuppressWarnings("serial")
@Table(name="TParticipant")
public class Participant implements Serializable {

  private Integer pk_part;
  ...
  private Collection<Event> events;
...
@ManyToMany(
    cascade = {CascadeType.PERSIST, CascadeType.MERGE},
    mappedBy = "participants",
    targetEntity = Event.class)
  public Collection<Event> getEvents() {
        return events;
        }

  public void setEvents(final Collection<Event> events) {
        this.events = events;
        }

Main- Klasse, Event anlegen und zu einem Participant mappen und vs.
Java:
 /* Event anlegen */
    final Event event = new Event();
    event.setEventname("Event1");
    dao.saveEvent(event);

    participant.getEvents().add(event);
    participant.setEvents(participant.getEvents());
    event.getParticipants().add(participant);
    event.setParticipants(event.getParticipants());

    dao.saveParticipant(participant);
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben