[英]Many to One Mapping in Hibernate
以下映射给出了错误
从 db.KarateInvoiceDetail 引用 db.KarateInvoice 的外键列数错误。 应该是 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;
想法是拥有一个包含(id、财政年度和公司 ID)和InvoiceDetail
的组合的Invoice
表,其组合键为(seqNo、InvoiceId、InvoiceFiscalYear 和 InvoiceCompanyId)。
我认为您应该明确引用 @JoinColumn 注释上的 Invoice 列:
@ManyToOne
@JoinColumns({ @JoinColumn(name = "karateInvoiceId"
, referencedColumnName="id"),
@JoinColumn(name = "karateInvoiceCompanyId"
, referencedColumnName="companyId"),
@JoinColumn(name = "karateInvoiceFiscalYear"
, referencedColumnName="fiscalYear") })
private KarateInvoice invoice;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.