【发布时间】:2018-08-17 11:23:32
【问题描述】:
我在数据库订单和报价中有两个表。早些时候有两个之间的@OneToOne 映射,即对于一个订单,有一个报价。对应的域是:
@Entity
@Table(name = "orders")
@DiscriminatorFormula("0")
@DiscriminatorValue("0")
class Order {
@OneToOne(mappedBy = "order", fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
private Offer offer;
public Offer getOffer() {
return this.offer;
}
public void setOffer(Offer offer) {
this.offer = offer;
}
}
@Entity
@Table(name = "offers")
class Offer {
}
现在,我想要两个之间的 OneToMany 映射,即对于单个订单,现在可以有多个报价。但为此,我想构建新版本的 Domain 以免影响现有功能。因为它是 OneToMany 映射,所以我将不得不使用 Set 或 List。所以,实际上,我想要这样做:
@Entity
@DiscriminatorValue("00")
class OrderV2 extends Order {
@OneToMany(mappedBy = "order", fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
private Set<Offer> offer;
public Set<Offer> getOffer() {
return this.offer;
}
public void setOffer(Set<Offer> offer) {
this.offer = offer;
}
}
我该如何实现这一点,因为目前它在 getter 方法中给了我错误,因为被覆盖的方法不能有不同的返回类型。
【问题讨论】:
-
愚蠢的想法。它是 1-1 或 1-N,而不是两者。
OrderV2也是Order,现在 BOTH 字段也是如此。在肮脏的黑客攻击之前设计您的模型
标签: java hibernate jpa inheritance hibernate-mapping