哪个JPA注释用于复合PK和FK?

时间:2013-10-03 12:37:36

标签: java jpa annotations compound-key

我有以下带有JPA 2.0注释的Java类:

@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的类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的复合外键。

我无法想到使这项工作正确的注释。 有什么建议吗?

编辑:

那好吧。我手动创建了所有表,包括表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 Reverse Engineering工具。我收到一个错误:

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

现在,我完全被封锁了,所以我搁置了我使用JPA的计划,而我正在使用MyBatis。我想我有一个不能用JPA或Hibernate表示的模式。除非有人能证明我错了吗?

0 个答案:

没有答案