
我無法更改資料庫架構,這就是我目前得到的:
public class User{
@Id
private String userId;
@OneToMany
@JoinTable(
name = "user_invoice",
joinColumns = @JoinColumn(name="user_id"),
inverseJoinColumns = @JoinColumn(name = "invoice_id")
)
private List<InvoiceItem> invoiceItems;
}
public class InvoiceItem{
@Id
private String invoiceId;
private String invoiceItemId;
}
此配置不允許 invoice_id 在 invoice_item 表上重復(因為我可以在給定發票上有多個專案)
如果我制作 invoice_item_id 復合 pk,我需要在 user_invoice 表上添加一個額外的列,而我不能。
我怎樣才能映射這個?
uj5u.com熱心網友回復:
您可以將多對多關聯拆分為兩個一對多關聯和一個用于連接表的物體。你可以像這樣映射它:
public class User{
@Id
private String userId;
@OneToMany(mappedBy = "user")
private List<Invoice> invoices;
}
@Table(name = "user_invoice")
public class Invoice{
@Id
@ManyToOne(fetch = LAZY)
@JoinColumn(name="user_id")
private User user;
@Id
private String invoiceId;
@OneToMany(mappedBy = "invoice")
private List<InvoiceItem> invoiceItems;
}
public class InvoiceItem{
@Id
@ManyToOne(fetch = LAZY)
private Invoice invoice;
@Id
private String invoiceItemId;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/513210.html
標籤:爪哇休眠jpa形式
