以下映射给出的错误为
A Foreign key refering db.KarateInvoice from db.KarateInvoiceDetail has the wrong number of column. should be 1
发票实体:
@Id
@Column(name = "id")
private long id;
@OneToOne
@JoinColumn(name = "companyid")
@Id
private Company company;
@Id
private short fiscalYear;
@OneToMany(mappedBy = "karateInvoiceDetails")
private List<KarateInvoiceDetail> karateInvoiceDetails;
发票详细信息:
@Id
private short seqNo;
@ManyToOne
@JoinColumns({ @JoinColumn(name = "karateInvoiceId"),
@JoinColumn(name = "karateInvoiceCompanyId"),
@JoinColumn(name = "karateInvoiceFiscalYear") })
private KarateInvoice invoice;
@Id
@OneToOne
@JoinColumns({ @JoinColumn(name = "studentId"),
@JoinColumn(name = "studentCompanyId") })
private KarateStudent student;
公司实体:
@Id
private long id;
想法是拥有一个Invoice
表,其中包含(id、fiscalyear和companyId)和InvoiceDetail
的组合,其组合键为(seqNo、InvoiceId、InvoiceFiscalYear、和 InvoiceCompanyId)。
最佳答案
我认为您应该在 @JoinColumn 注释上显式引用发票列:
@ManyToOne
@JoinColumns({ @JoinColumn(name = "karateInvoiceId"
, referencedColumnName="id"),
@JoinColumn(name = "karateInvoiceCompanyId"
, referencedColumnName="companyId"),
@JoinColumn(name = "karateInvoiceFiscalYear"
, referencedColumnName="fiscalYear") })
private KarateInvoice invoice;
关于java - Hibernate 中的多对一映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42081106/