2013-06-19 117 views
1

我是新來這個論壇,也是新的Play框架。我正在做文憑工作,對於在MySQL模式實體中映射的Play模型,我有一個小問題。「雙」ManyToMany模型之間的關係PlayFramework

基本上,我有「宣佈」和「技術」實體(模型),我想在它們之間建立「雙重」ManyToMany關係。具體來說,我需要「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 

感謝,任何幫助表示讚賞!

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

+1

您是否嘗試過使用@JoinColumn(nullable = false):D – mirkobrankovic

回答

1

使用@JoinTable爲每個表指定一個不同的表名。 類似於:

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


@ManyToMany(...) 
@JoinTable(name="Announce_gtkTechno") 
public List<Technology> gtkTechno;