简体   繁体   English

如何使用java.util.List在附加表中将@ManyToMany与主键映射

[英]How mapping @ManyToMany with primary key in extra table using java.util.List

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 图像-使用带有@ManyToMany的java.util.List的模型

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 图像-使用带有@ManyToMany的java.util.Set的模型

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? 问题是: 如何使用java.util.List获取由@ManyToMany关系自动生成的额外表的属性是主外键(PFK)?

in my jpa study, we don't need create a primary key in extra table generate by @ManyToMany. 在我的jpa研究中,我们不需要在@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
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM