【发布时间】:2017-06-24 04:20:48
【问题描述】:
以下映射给出错误
从 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;
想法是有一个 Invoice 表,其中包含(id、会计年度和 companyId)的组合和 InvoiceDetail 的组合键(seqNo、InvoiceId、InvoiceFiscalYear 和 InvoiceCompanyId)。
【问题讨论】:
-
您使用的是什么版本的 Hibernate?我刚刚在 5.2.7 上测试了映射,我认为这没有问题。
-
我使用的是休眠 5.1