创建2个实体的正确方法是什么,其中1是另一个的父级?例如,我们有以下两个表:
Email_Outbox
------------
Id
Email_Id
Date_Sent
Email_Outbox_Schedule
---------------------
Id
Email_Id
Date_Sent
Date_to_Send
非常简单,我们会立即在EmailOutbox
发送电子邮件,并在EmailOutboxSchedule
的指定日期发送电子邮件。理想情况下,这是Java中的类层次结构,其中EmailOutboxSchedule
扩展EmailOutbox
。然后我们只需要指定1个额外字段dateToSend
,并且可以利用典型的对象层次结构功能。用hibernate做这个有问题吗?我是否需要以任何特殊方式注释2个实体?
答案 0 :(得分:2)
您可能需要阅读Hibernate inheritance mapping。但是,从逻辑上讲,我不会购买该计划扩展收件箱。听起来更多的是,计划是个人消息的属性。那么可能只是在一个消息实体上有可空属性date to send
?
答案 1 :(得分:0)
通过this document,我看到的解决方案是将@MappedSuperclass用于父类Email_Outbox,然后使用两个子类Scheduled_Email_Outbox和Immediate_Email_Outbox。
除@Entity注释外,Immediate_Email_Outbox将为空。
我承认,空课很不优雅,但似乎它会起作用。 (无论如何,冬眠和优雅有些不相容。)