【问题标题】:Hibernate: How Discriminator Column works in case when there is no physical columns or value present for differentiating instance?Hibernate:当没有物理列或值用于区分实例时,鉴别器列如何工作?
【发布时间】:2019-08-02 06:34:00
【问题描述】:

我试图理解对我来说是新的现有代码,因为我使用了 discrimnatercolumn 和值,它们在数据库中具有实际的物理列名称以及物理值,但是在这个现有代码中没有物理列或值,但它仍然存在正在工作。

@Table(name = "ADRESSE")
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="DISC", discriminatorType=DiscriminatorType.STRING,length=20)
public class Address{
 ID
}

数据库中没有名为 DISC 的列。这是否意味着它会根据 ID 进行区分?

@Table(name = "POST_ADRESSE")
@Indexed
@DiscriminatorValue(value = "POSTADRESSE")
public class PostAdresse extends Adresse {
  //Address1 Address 2
}

没有值名称 PostAdresse。没有名称为 PostAdresse 的列。唯一的共同点是 ID,在 Adresse 和 PostAdresse 中都很常见

当我们检查 (addresse instanceof postadresse);那么它在什么基础上区分并返回正确的对象,即它是如何工作的呢?

【问题讨论】:

    标签: hibernate jpa orm hibernate-mapping discriminator


    【解决方案1】:

    对于您的情况,@DiscriminatorColumn 无效,因为您的继承策略是 InheritanceType.JOINED

    @DiscriminatorColumn 在继承策略为InheritanceType.SINGLE_TABLE 的情况下有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      • 2013-12-04
      • 2011-09-06
      • 2022-06-30
      • 1970-01-01
      相关资源
      最近更新 更多