我需要存储在同一个表中收到和发送的电子邮件。
任何outEmail
都可以再次发送,inEmail
则不能。我希望这些对象能够以这种方式打扮,因此在服务层中更难以犯这个错误。
那,并且某些电子邮件中有某些与之相关的行为。层次结构ID如下:
电子邮件 - > outEmail - > customerOut
电子邮件 - > inEmail - > customerIn,supplierIn
所以outEmail对象是唯一可以再次发送的对象。 我以为我会这样试试:
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="direction")
@Table(name="email")
public abstract class Email{
}
inEmail:
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="role")
@DiscriminatorValue("IN")
public abstract class InEmail extends Email {
}
customerIn:
@Entity
@DiscriminatorValue("CUSTOMER")
public class customerIn extends InEmail {
}
在customerIn,它使用inEmail中的鉴别器值。我正在尝试做什么,或者我需要替代方案吗?