領域物件裡有個屬性的型別是介面,如何用hibernate持久化

ahcen001發表於2008-11-20
大家好,我最近在設計一個倉庫系統,設計事務物件與出,入,移庫單遇到一點疑惑。
//訂單
interface Order{
}
//入庫單
class InInventoryOrder{
private Long id;
....
}
//出庫單
class OutInventoryOrder{
private Long id;
...
}

//目前為了持久化事務物件,我這樣設計MaterialTransaction物件
class MaterialTransaction{
private Long id;
....
//對應的出入庫單物件,many-to-one的關係
private InInventoryOrder inInventoryOrder;
private OutInventoryOrder outInventoryOrder;
}

疑惑:
這樣設計的話,如果以後有新型別的單子,比如說根據移庫單產生事務記錄,那麼我就需要修改MaterialTransaction為:
class MaterialTransaction{
private Long id;
private Item item;
....
//對應的出入庫單物件,many-to-one的關係
private InInventoryOrder inInventoryOrder;
private OutInventoryOrder outInventoryOrder;
//新增加的
private MoveInventoryOrder moveInventoryOrder;
}
這樣的設計我感覺不是很好,我想這樣設計:
MaterialTransaction為:
class MaterialTransaction{
private Long id;
private Item item;
....
//對應的出入庫單物件,many-to-one的關係
private Order order;
}
這樣order可以表示InInventoryOrder,OutInventoryOrder,MoveInventoryOrder或者其他實現了Order介面的物件。但是我不知道這樣設計的話,如何在hibernate中配置?還是根本就不能這樣設計?




相關文章