嗨,當我嘗試使用電子郵件作為外鍵保存客戶詳細資訊時,地址表中的電子郵件列保持為空。我也嘗試將 joinColum 移動到客戶類,但隨后它將 Integer Id 存盤為外鍵
@Entity
@Getter
@Setter
@NoArgsConstructor
public class Customer implements Serializable {
@Id
@GeneratedValue
private Integer id;
private String name;
@Column(unique = true)
private String email;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER,mappedBy = "customer")
private Set<Address> addresses;
}
地址類
@Entity
@NoArgsConstructor
@Getter
@Setter
public class Address implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer addressId;
private String address;
@ManyToOne
@JoinColumn(referencedColumnName = "email")
private Customer customer;
}
JSON 請求
{
"name":"someName",
"email":"someEmail",
"addresses":[
{
"address":"exampleAddress1"
},
{
"address":"exampleAddress2"
}
]
}
uj5u.com熱心網友回復:
可以通過參考父列的主鍵或唯一鍵來創建外鍵約束。
物體可以使用子物件或父物件保存,因為它是雙向關系。但是,在保存之前鏈接兩個物件。
請根據您的用例選擇方法。
使用地址物體保存
Customer customer = Customer.builder().email("abc").name("name")
.build();
Set<Address> addressSet=new HashSet<>();
Address a1 = Address.builder().address("addressname").customer(customer).build();
addressRepository.save(a1);
使用客戶物件保存
Set<Address> addressSet = new HashSet<>();
Customer customer = Customer.builder().email("abc").name("name")
.build();
Address a1 = Address.builder().address("addressname").customer(customer).build();
addressSet.add(a1);
customer.setAddresses(addressSet);
entityRepository.save(customer);
為避免問題 物件參考未保存的瞬態實體 - 在重繪 之前保存瞬態實體,請相應地添加級聯型別。
@ManyToOne(fetch = FetchType.LAZY,cascade=CascadeType.ALL)
@JoinColumn(name = "customer_email",referencedColumnName = "email")
private Customer customer;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/398760.html
