我有兩個表professional,address它們將鏈接在一個關聯物體(專業地址)中。
我有以下示例(總結)代碼:
Address address1 = new Address();
Address address2 = new Address();
Address address3 = new Address();
Professional professional = new Professional();
List<Address> addressList = new ArrayList<>();
address1.setStreet("A");
address2.setStreet("B");
address3.setStreet("C");
addressList.add(address1);
addressList.add(address2);
addressList.add(address3);
professional.setAddresses(addressList);
professionalRepository.save(professional);
我對代碼執行的期望是這樣的:

但是,我得到的是:

我的物體:
Professional
package example_package;
import lombok.*;
import javax.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@Builder
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Table(name = "professional")
public class Professional extends Auditable implements Serializable {
@Column(name = "first_name", nullable = false)
private String firstName;
@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinTable(name = "professional_address",
joinColumns = @JoinColumn(name = "professional_id"),
inverseJoinColumns = @JoinColumn(name = "address_id")
)
private List<Address> addresses = new ArrayList<>();
}
Address
package example_package;
import lombok.*;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
@Builder
@Entity
@NoArgsConstructor
@Data
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Table(name = "address")
public class Address extends Auditable implements Serializable {
@Column(name = "street")
private String street;
}
我做錯了什么,我該如何解決?
uj5u.com熱心網友回復:
AFAIK,在映射多對多關聯時,我們應該Collection 在兩個類中都包含 a :如 Hibernate 的檔案中所述,每個多對多關聯都有兩個方面,即擁有方和非擁有方,或反向。
由于您Professional是擁有方,因此您Address應該如下所示:
@Builder
@Entity
@NoArgsConstructor
@Data
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Table(name = "address")
public class Address extends Auditable implements Serializable {
@Column(name = "street")
private String street;
@ManyToMany(mappedBy = "addresses", fetch = FetchType.LAZY)
private List<Professional> professionals = new ArrayList<>();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/505381.html
