我想知道在我的订单和请求之间映射的最佳方式。 的Order
类是:休眠映射OneToMany +继承
@Entity
@Table(name = "Orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
}
我有一个类,带有一个Order
属性
@Entity
@Table(name = "Requests")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="request_type",discriminatorType=DiscriminatorType.STRING)
public class Request {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne(targetEntity = Order.class, fetch = FetchType.EAGER)
@JoinColumn(name = "oldOrder_id", referencedColumnName = "id")
private Order oldOrder;
}
我有Request
这个子类,另需Order
属性
@Entity
@DiscriminatorValue("Edit")
public class EditRequest extends Request {
@ManyToOne(targetEntity = Order.class, fetch = FetchType.EAGER)
@JoinColumn(name = "newOrder_id", referencedColumnName = "id")
private Order newOrder;
}
而且我有另一个子类(CancelRequest
)Request
wh ich不需要Order
属性。
它没有意义,如果在Order
类我把:
@OneToMany(mappedBy="oldOrder")
private Collection<Request> requests;
@OneToMany(mappedBy="newOrder")
private Collection<EditRequest> editRequests;
因为一个订单只能有一个Collection<Request>
类型的属性。
那么我应该在我的Order
课上放什么?
你能解释为什么一个订单应该只有一个属性Type Collection? –
davidxxx