如何使用 java.util.List 在 extra table 中映射 @ManyToMany 与主键
How mapping @ManyToMany with primary key in extra table using 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 关系自动生成的额外table 的属性是使用java.util.List 的主外键(PFK)?
在我的 jpa 研究中,我们不需要在由 @ManyToMany 生成的额外 table 中创建主键。
这是我的最终解决方案:
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
}
如果我这样做;
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 关系自动生成的额外table 的属性是使用java.util.List 的主外键(PFK)?
在我的 jpa 研究中,我们不需要在由 @ManyToMany 生成的额外 table 中创建主键。
这是我的最终解决方案:
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
}