Java 如何在中间表中映射具有一个额外列的集合

Java 如何在中间表中映射具有一个额外列的集合,java,hibernate,many-to-many,Java,Hibernate,Many To Many,我正在尝试将对象映射到下面的联接表, 表名:预订\u pax 3列:预订id,旅客id,旅客无需参加旅游 主键:预订id,乘客id 外键:预订id参考预订表,乘客id参考乘客表 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, P

我正在尝试将对象映射到下面的联接表,

表名:预订\u pax
3列:预订id旅客id旅客无需参加旅游
主键:预订id乘客id
外键:预订id参考预订表,乘客id参考乘客表

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
)
我有两个实体:pax和booking。由于关系是多个,因此需要在此联接表中添加一个额外的列。
现在我无法使用Hibernate进行映射

建模:

@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;
    }
    ......
}
我尝试了很多方法来绘制藏品的地图,但仍然不起作用。 我使用的IDE是带有Javee5的MyEclipse 8.6。我试图升级到JavaEE6,但失败了

谢谢。

未经测试:

@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;
}
@ElementCollection
@收集表(
name=“预订”,
joinColumns={@JoinColumn(name=“booking_id”)}
)
@列(name=“pax\u numb\u in\u tour”)
@MapKeyJoinColumn(name=“pax_id”)
公共映射getPaxs(){
返回PAX;
}
@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;
}