1

我是这个论坛的新手,也是 Play Framework 的新手。我正在做文凭工作,但我有一点问题,关于 Play 模型,它在 MySQL 模式实体中映射。

基本上,我有“公告”和“技术”实体(模型),我想在它们之间建立“双重”多对多关系。更具体地说,我想要“RequiredTecnologies”和“Good-To-KnowTechnologies”交叉表。有没有办法“拆分”这两个表?这是生成一个 ManyToMany 表的代码,其中重复列“id”引用了公告。

// ENTITY ANNOUNCE
...
@Entity
public class Announce extends Model {

    ...
    @JoinColumn(nullable=true)
    @ManyToMany
    public List<Technology> reqTechno;

    @JoinColumn(nullable=true)
    @ManyToMany
    public List<Tehnologija> gtkTechno;
    ...
}

// ENTITY TECHNOLOGY
...
@Entity
public class Technology extends Model {

    ...
@ManyToMany(mappedBy = "reqTechno")
public List<Announce> annRT;

@ManyToMany(mappedBy = "gtkTechno")
public List<Announce> annGT;
    ...
}

此代码以下列方式在 MySQL 中生成表:

annRT_id  reqTechno_id  annGT_id  gtkTechno_id
______________________________________________
       1             2         1             7
       1             3         1             9
    null          null         1            10
       2             4         2             7

我想要的结果是:

    annRT_id  reqTechno_id       annGT_id  gtkTechno_id
__________________________       ______________________
       1             2                  1             7
       1             3                  1             9
       2             4                  1            10
                                        2             7

在此先感谢,任何帮助表示赞赏!

PS 我使用的 Play 版本是 v. 1.2.5。

4

1 回答 1

1

使用@JoinTable 为每个表指定不同的表名。就像是:

@ManyToMany(...)
@JoinTable(name="Announce_reqTechno")
public List<Technology> reqTechno;


@ManyToMany(...)
@JoinTable(name="Announce_gtkTechno")
public List<Technology> gtkTechno;
于 2014-02-27T10:11:34.927 回答