【发布时间】:2016-07-31 12:13:24
【问题描述】:
我有这样的场景
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TANDC_TYPE", discriminatorType = DiscriminatorType.STRING, length = 32)
@Table(name = "T_TERMS_AND_CONDITIONS", schema = DataSourceConfig.PERSISTENCE_SCHEMA_NAME)
public class TermsAndConditions {
...
}
它是具有鉴别器值“CREATOR”的子类
@Entity
@DiscriminatorValue("CREATOR")
public class AccountTermsAndConditions extends TermsAndConditions {
...
}
另一个具有鉴别器值“ORDER”的子类
@Entity
@DiscriminatorValue("ORDER")
public class OrderTermsAndConditions extends TermsAndConditions {
...
}
在这里,我的要求是促进一种名为“USER”的新型帐户的条款和条件映射,该帐户与我的AccountTermsAndConditions 相关。
现在,我不想再为帐户类型“USER”(类似于UserTermsAndConditon)添加一个类,因为“CREATOR”和“USER”都与帐户类型相关。
我需要一个可能的解决方案来根据帐户类型将我的鉴别器值设置为“CREATOR”或“USER”。
有没有办法根据条件在类中设置我的鉴别器值?
我还看到了 oracle 的文档,其中指出:
"如果没有指定 DiscriminatorValue 注释并且一个 使用鉴别器列,提供者特定的功能将是 用于生成表示实体类型的值。”
如何进行实施?
请帮帮我。
【问题讨论】:
标签: java hibernate orm hibernate-mapping discriminator