If i do this;
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
}
... I have this mapping:
Image - Model using java.util.List with @ManyToMany
If i do this;
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
}
... I have this mapping:
Image - Model using java.util.Set with @ManyToMany
The Question is: how do I get the attributes of the extra table automatically generated by @ManyToMany relationship are primary foreign keys(PFK) using java.util.List?
in my jpa study, we don't need create a primary key in extra table generate by @ManyToMany.
This is my final solution:
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
}