在连接表上没有主复合键的JPA @ManyToMany关系

时间:2012-05-01 01:33:47

标签: java sql jpa playframework ebean

我有一个与实体B有m:n关系的实体A,但是对于每个A,不仅可以有多个B,而且还有多个完全相同的B。

我尝试定义这样的关系:

@Entity
class A {
    @Id
    public Long id;

    @ManyToMany
    public List<B> bs = new ArrayList<B>();
}

@Entity
class B {
    @Id
    public Long id;
}

为我提供了以下为连接表生成的DDL:

create table a_b (
a_id                         bigint not null,
b_id                        bigint not null,
constraint pk_a_b primary key (a_id, b_id))
;

除主要复合键外,DDL很好,因为这意味着一个A一次只能有一个特定的B. 我正在使用ebean持久性在play framework 2.0上执行此操作。 任何提示?

1 个答案:

答案 0 :(得分:0)

您不能使用@ManyToMany,因为它的定义不允许您想要的重复。

您想要的是元素列表(如JPA @ElementCollection),或者保持表格在模型中不相关,并使用查询来检索与A关联的B.

我会链接到ebeans文档,但它是一个PDF ... :(