2013-05-07 3 views
0

Play Framework 2.1에서 JoinTable과 단방향 OneToMany 관계를 만들려고했습니다. 그러나 프레임 워크는 'JoinTable'을 생성하지 않습니다 : "transformation_input_files". 이상한 부분은 ManyToMany에 대한 관계를 변경하면 테이블이 생성된다는 것입니다. 다음은 코드입니다.JoinTable과 단방향 OneToMany 관계 - 테이블이 생성되지 않았습니다.

그래서 여러 S3Files가 포함 된 변환 클래스에 관한 것입니다. 즉 양방향 관계 수 없도록

@Entity 
@Table(name="s3files") 
public class S3File extends Model { 

    @Id 
    public Long id; 

    /*...*/ 
} 

S3Files 더 모델에 사용된다 : 여기서

@Entity 
@Table(name = "transformations") 
public class Transformation extends Model { 

    @Id 
    public Long id; 

    /*...*/ 

    @OneToMany(cascade = CascadeType.PERSIST) 
    @JoinTable(
     name="transformation_input_files", 
     joinColumns = @JoinColumn(name="transformation_id"), 
     inverseJoinColumns = @JoinColumn(name="input_file_id") 
    ) 
    public List<S3File> inputFiles; 
} 

가 S3File이다 : 여기서 변환 파일이다. @ManyToMany에서 @OneToMany를 변경하면 조인 테이블이 생성되지만 @OneToMany 관계를 고수하고 싶습니다.

어떻게이 문제를 해결할 수 있습니까? 내가 뭔가를 놓친 건가?

+0

A와 B 사이에 일대일 관계 (예 :)가있는 경우 중간 표가 필요하지 않습니다. B는 칼럼에 AId (외래 키)를 가질 수 있으며 각 행에는 부모 A가 표시됩니다. 이유가있을 수 있습니까? – sanbhat

+0

귀하의 의견을 보내 주셔서 감사합니다. 그러나 S3Files (예제의 클래스 B)는 더 많은 클래스에서 사용됩니다. 그래서 B와 비슷한 OneToMany 관계를 가진 C와 D와 같은 다른 클래스가 있다고하자. 클래스 B는 A, C, D에 대한 컬럼을 포함한다. B가 C 인스턴스에 의해 생성되고 소유 되었다면, A와 D는 null이고 연관성이 없다 . – Huub

+0

조인 테이블을 매핑하면 테이블이 자동 생성되고 해당 구현 방법도 고려됩니다. – Ziul

답변

0

일대 다 관계에서 "많은"엔터티에 관계를 저장해야합니다. S3File 클래스에 값을 저장하지 않으려면 두 클래스를 조인 할 다른 클래스를 만들어야합니다.

Example: 
@Entity 
@Table(name="transformations_ s3files") 
public class Relation extends Model { 
    @Id 
    public Long id; 

    @ManyToOne 
    public Transformation transformation;   

    @OneToOne 
    public S3File file; 
} 
+0

입력 해 주셔서 감사합니다. 이 문제를 '해결 방법'으로 생각하고 이유를 설명합니다. 먼저 관계형 주석을 사용하는 대신 엔티티를 정의하는 것과 같은 방식으로 엔티티 간의 관계를 명시하는 아이디어가 마음에 들지만 (나는 그와 함께 살 수있다). 두 번째로 이러한 관계의 관계는 문서화가이 관계를 설명하기 때문에 적절한 방식으로 파싱되어야한다. [documentaion에 링크] (http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#d0e1642) – Huub

+0

그것의 주위에, 꽤 일반적인 방법은 조인 테이블에 대한 엔터티를 만들려면이 방법은 , 조인 테이블을 통해 조인 할 때 u 리가 더 유연 해지며, u 리할 때 키가 아닌 추가 컬럼을 추가 할 수 있습니다. http://www.mkyong.com/hibernate/hibernate-many-to-many-example-join-table-extra-column-annotation/ – Ziul

+0

Ebean은 OneToMany 관계에서 조인 테이블을 지원하지 않습니다. – MaFo

관련 문제