2016-06-20 9 views
0

これを行うと、java.util.Listを使用して余分なテーブルに@ManyToManyをマッピングする方法

public class Client{ 

    @Id 
    @Column(columnDefinition = "CHAR(11)") 
    private String cpf; 

    @ManyToMany(cascade = CascadeType.ALL) 
    private List<Address> addresses; 
    //get set 
} 

public class Address{ 

    @Id 
    private String zipCode; 

    @Id 
    private String number; 

    @Id 
    @Column(columnDefinition = "varchar(255) default 'DONT HAVE'") 
    private String complement; 
    //get set 
} 

...私はこのマッピングを持っている:

Image - Model using java.util.List with @ManyToMany

私はこれを行う場合は、

public class Client{ 

    @Id 
    @Column(columnDefinition = "CHAR(11)") 
    private String cpf; 

    @ManyToMany(cascade = CascadeType.ALL) 
    private Set<Address> addresses; 
    //get set 
} 

Image - Model using java.util.Set with @ManyToMany

質問は次のとおりです: はどのように私は自動的に@ManyToMany関係によって発生する余分なテーブルの属性は、プライマリ外部キーあるのですか

public class Address{ 

    @Id 
    private String zipCode; 

    @Id 
    private String number; 

    @Id 
    @Column(columnDefinition = "varchar(255) default 'DONT HAVE'") 
    private String complement; 
    //get set 
} 

...私はこのマッピングを持っていますjava.util.Listを使用して(PFK)?

答えて

0

私のjpaの研究では、@ManyToManyが生成する余分なテーブルで主キーを作成する必要はありません。

public class Client{ 

    @Id 
    @Column(columnDefinition = "CHAR(11)") 
    private String cpf; 

    @ManyToMany(cascade = CascadeType.ALL) 
    @JoinTable(name="client_address", joinColumns = { 
    @JoinColumn(name = "client_cpf") }, 
    inverseJoinColumns = { @JoinColumn(name = "address_zipcode", 
     referencedColumnName="zipCode"), @JoinColumn(name = "address_number", 
     referencedColumnName="number", @JoinColumn(name = 
     "address_complement", 
     referencedColumnName="complement"}, 
    uniqueConstraints = @UniqueConstraint(columnNames = { 
     "client_cpf", "address_zipcode", "address_number", 
     "address_complement" }) 
    private List<Address> addresses; 
    //get set 
} 

これは私の最終的な解決策であります

関連する問題