2013-06-19 4 views
1

저는이 포럼을 처음 사용하고 Play Framework를 처음 사용합니다. 나는 디플로마 작업을하고 있고, MySQL 스키마 엔티티에 매핑 된 Play 모델과 관련하여 약간의 문제가 있습니다."Double"PlayFramework의 모델 간의 ManyToMany 관계

기본적으로 "발표"및 "기술"엔티티 (모델)가 있으며 두 개 이상의 ManyToMany 관계를 만들고 싶습니다. 좀 더 구체적으로 말하자면 "RequiredTecnologies"와 "Good-To-KnowTechnologies"크로스 테이블이 필요합니다. 이 두 테이블을 "분할"할 수있는 방법이 있습니까? 다음은 발표를 다시 시작하는 "id"열을 반복하여 하나의 ManyToMany 테이블을 생성하는 코드입니다.

// 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. 사용중인 Play 버전은 v. 1.2.5입니다.

+1

당신이 @JoinColumn을 (널 (NULL) = false)를 사용하려고 유무 : D – mirkobrankovic

답변

1

@JoinTable을 사용하여 각각에 대해 다른 테이블 이름을 지정하십시오. 뭔가 같은 :

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


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