领域对象里有个属性的类型是接口,如何用hibernate持久化

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


>order可以表示InInventoryOrder,OutInventoryOrder,MoveInventoryOrder

order和子对象InInventoryOrder,OutInventoryOrder,MoveInventoryOrder就是继承关系,Hibernate可以配置这种继承的,查一下说明书。

你的思路设计很好,典型的对象设计,而不像其他提问题都是上来数据表什么的。

请问您最后是怎么实现的?