2012-03-27 3 views
0

Ich versuche, die Objekte der folgenden Join-Tabelle auf der Karte,
Wie eine Sammlung mit einer zusätzlichen Spalte in einer Zwischentabelle abzubilden

Tabellenname: booking_pax
3 Spalten: booking_id, pax_id, pax_no_in_tour
Primärschlüssel: booking_id,
Fremdschlüssel pax_id: booking_id ref Buchungs Tabelle, pax_id ref pax Tisch

CREATE TABLE `booking_pax` (
    `booking_id` int(8) unsigned NOT NULL, 
    `pax_id` int(8) unsigned NOT NULL, 
    `pax_numb_in_tour` int(2) unsigned DEFAULT NULL, 
    PRIMARY KEY (`booking_id`,`pax_id`), 
    KEY `booking_booking_pax` (`booking_id`), 
    KEY `pax_booking_pax` (`pax_id`), 
    CONSTRAINT `booking_booking_pax` FOREIGN KEY (`booking_id`) REFERENCES `booking` (`booking_id`) ON DELETE NO ACTION ON UPDATE NO ACTION, 
    CONSTRAINT `pax_booking_pax` FOREIGN KEY (`pax_id`) REFERENCES `pax` (`pax_id`) ON DELETE NO ACTION ON UPDATE NO ACTION 
) 

Ich habe zwei Entitäten: pax und Buchung. Aufgrund der Beziehung ist ManyToMany und es gibt eine zusätzliche Spalte, die dieser Join-Tabelle hinzugefügt werden muss.
Jetzt habe ich Probleme beim Zuordnen mit Hibernate.

Modellierung:

@Entity 
public class Booking { 
    ...... 

    @ManyToMany 
    @JoinTable(
     name="booking_pax", 
     joinColumns={@JoinColumn(name="booking_id")}, 
     inverseJoinColumns={@JoinColumn(name="pax_id")} 
    ) 
    //@ElementCollection 
    //@Column(name="pax_numb_in_tour") 
    public Map<Pax, Integer> getPaxs() { 
     return paxs; 
    } 
    ...... 
} 

Der Fehler msg:

org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.....model.Booking.paxs[java.lang.Integer] 

Ich habe viele Wege versucht, die Sammlung auf der Karte, aber immer noch nicht funktioniert. Die IDE, die ich verwende, ist MyEclipse 8.6 mit JaveEE 5. Ich habe versucht, auf JavaEE 6 zu aktualisieren, aber es ist fehlgeschlagen.

Danke.

Antwort

0

ungetestet:

@ElementCollection 
@CollectionTable(
    name="booking_pax", 
    joinColumns={@JoinColumn(name="booking_id")} 
) 
@Column(name="pax_numb_in_tour") 
@MapKeyJoinColumn(name="pax_id") 
public Map<Pax, Integer> getPaxs() { 
    return paxs; 
} 
Verwandte Themen