大家好,我最近在设计一个仓库系统,设计事务对象与出,入,移库单遇到一点疑惑。
//订单
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中配置?还是根本就不能这样设计?