Какие аннотации JPA использовать для соединения PK и FK?

У меня есть следующие классы Java с аннотациями JPA 2.0:

@Entity
public class A {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
}

Также классы B и C, которые очень похожи.

Затем у меня есть класс AB, который имеет соединение PK (A и B) с FK для A и B:

@Entity
public class AB {
    @Id @ManyToOne private A a;
    @Id @ManyToOne private B b;
}

Далее у меня есть класс AC, который похож на AB:

@Entity
public class AC {
    @Id @ManyToOne private A a;
    @Id @ManyToOne private C c;
}

Пока что все ограничения базы данных точно такие, как мне нужны. Теперь следующая часть, которую я не могу понять:

У меня есть класс X. Это должно выглядеть так:

public class X {
    private A a;
    private B b;
    private C c;
}

Вот требования: A и B должны быть составным первичным ключом, а также составным внешним ключом для AB.

A и C должны быть составным внешним ключом для AC.

Я не могу думать о правильных аннотациях, чтобы сделать эту работу. Какие-либо предложения?

РЕДАКТИРОВАТЬ:

Хорошо, тогда. Я вручную создал все таблицы, включая таблицу X с этим DDL:

create table X (
  A_ID int not null,
  B_ID int not null,
  C_ID int not null,
  primary key (A_ID, B_ID),
  constraint `fk_ab` foreign key (A_ID, B_ID) references AB (A_ID, B_ID),
  constraint `fk_ac` foreign key (A_ID, C_ID) references AC (A_ID, C_ID)
) engine=InnoDB;

и запустите на нем инструмент обратного проектирования Hibernate. Я получаю ошибку:

org.hibernate.MappingException: An association from the table X refers to an unmapped class: Ac

На данный момент я полностью заблокирован, поэтому я откладываю свой план использования JPA и вместо этого использую MyBatis. Я думаю, что у меня есть схема, которую невозможно представить с помощью JPA или Hibernate. Разве кто-нибудь может доказать, что я не прав?

0 ответов

Другие вопросы по тегам