我想知道在我的訂單和請求之間映射的最佳方式。 的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