Как отобразить коллекцию с одним дополнительным столбцом в промежуточной таблице - PullRequest
0 голосов
/ 27 марта 2012

Я пытаюсь сопоставить объекты со следующей таблицей соединения,

Название таблицы: booking_pax
3 столбца: booking_id , pax_id , pax_no_in_tour
Первичный ключ: booking_id , pax_id
Внешний ключ: booking_id таблица бронирования ref, pax_id таблица ref ref

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
)

У меня есть две сущности: чел. и бронирование . Из-за отношения ManyToMany, и есть еще один столбец необходимо добавить в эту таблицу соединения.
Теперь у меня проблема с отображением в 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;
    }
    ......
}

Сообщение об ошибке:

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

Я пробовал много способов отобразить коллекцию, но все еще не работает. Я использую IDE MyEclipse 8.6 с JaveEE 5. Я попытался перейти на JavaEE 6, но не смог.

Спасибо.

1 Ответ

0 голосов
/ 29 марта 2012

непроверенный:

@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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...