0

JPA 2.0 アノテーション付きの次の Java クラスがあります。

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

また、非常によく似たクラス B と C。

次に、A と B への FK を持つ複合 PK (A と B) を持つクラス AB があります。

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

次に、AB に似たクラス AC があります。

@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 への複合外部キーである必要があります。

これを機能させるための正しい注釈が思い浮かびません。助言がありますか?

編集:

じゃあ。この DDL を使用して、テーブル X を含むすべてのテーブルを手動で作成しました。

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 では表現できないスキーマがあると思います。誰かが私が間違っていることを証明できない限り?

4

0 に答える 0