MappedSuper类将继承用于字段和代码的重用。例如,如果您希望所有实体都具有
Long id和
Longversion字段,则可以使它们全部扩展一个包含这两个字段以及它们的getter,setter等
baseEntity注释的类
MappedSuperclass。但是,您永远不会拥有一个具有关联的实体与baseEntity:关联将始终与baseEntity的特定子类关联。
父实体用于“实体多态性”。例如,您可以想象有两种
Message:an
EmailMessage和a
SmsMessage。两者都将包含源,目标和主体。但是,EmailMessage将具有电子邮件地址和主题,而SmsMessage将具有电话号码。
您可以想象有一个
Person实体,其中包含已发送消息的集合,类型为
Message。该集合实际上将包含EmailMessage和SmsMessage的实例。Hibernate将根据用于继承映射的继承策略来决定实例化哪个实例:
- 所有消息都可以存储在同一表中,并且Hibernate将使用一个包含消息类型的区分列
- EmailMessage可以存储在一个表中,而SmsMessage可以存储在另一个表中
- 或两个实体(源,目标,主体)共有的字段都可以存储在公用表中,第二个表中的EmailMessage特定字段,第三个表中的SmsMessage特定字段。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)