Как настроить связь Hibernate @ManyToMany с каскадами на обоих внешних ключах? - PullRequest
1 голос
/ 26 января 2010

Я пытаюсь отобразить ассоциацию @ManyToMany, используя hibernate. Но пока мне удалось получить каскад только на одном из внешних ключей.

Мой исходный код выглядит так:

@Entity
public class Airplane {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    @OnDelete(action=OnDeleteAction.CASCADE)
    @ManyToMany(mappedBy="airplanes", cascade = {CascadeType.ALL})
    private Set<Passenger> passengers;
...
}

@Entity
public class Passenger {
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    @OnDelete(action=OnDeleteAction.CASCADE)
    @ManyToMany(cascade = {CascadeType.ALL})
    private Set<Airplane> airplanes;
...
}

выходы hibernatetool:

create table Airplane (
    id bigint not null auto_increment,
    objVersion bigint,
    primary key (id)
) type=InnoDB;

create table Passenger (
    id bigint not null auto_increment,
    objVersion bigint,
    primary key (id)
) type=InnoDB;

create table Passenger_Airplane (
    passengers_id bigint not null,
    airplanes_id bigint not null,
    primary key (passengers_id, airplanes_id)
) type=InnoDB;

alter table Passenger_Airplane 
    add index FKC9262997C1630114 (airplanes_id), 
    add constraint FKC9262997C1630114 
    foreign key (airplanes_id) 
    references Airplane (id) 
    on delete cascade;

alter table Passenger_Airplane 
    add index FKC92629979BEE2B2 (passengers_id), 
    add constraint FKC92629979BEE2B2 
    foreign key (passengers_id) 
    references Passenger (id);

Каким-то образом аннотация @OnDelete (action = OnDeleteAction.CASCADE) в классе Passenger игнорируется hibernate.

1 Ответ

0 голосов
/ 26 января 2010

Хм, не уверен, что это работает. См очень старый комментарий в ЧЧЧ-4404 .

...