2016-06-20 2 views
0

Если я это сделаю;Как сопоставление @ManyToMany с первичным ключом в дополнительной таблице с использованием java.util.List

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 
} 

.

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.Set with @ManyToMany

Вопрос заключается в том: как получить атрибуты дополнительной таблицы автоматически генерируемой @ManyToMany отношения являются основными внешними ключами (PFK) с помощью java.util.List?

ответ

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 
} 
Смежные вопросы