当前位置: 首页 > 知识库问答 >
问题:

如何在Hibernate中创建多级继承策略

牛智志
2023-03-14

当我只有product类和两个用继承策略扩展product的类时,单表(product-

必须在根实体中定义鉴别器列,它将在子类com中被忽略。实例演示。实体电子学

产品类别

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@DiscriminatorColumn(name = "type")
public abstract class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "info")
    private String info;

    @Column(name = "basic_characteristics")
    private String basicCharacteristics;

    @Column(name = "price")
    private Integer price = 0;
    }

电子类:

@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@DiscriminatorValue("electronics")
@DiscriminatorColumn(name = "typeElectronics")
public class Electronics extends Product {

    @Column(name = "electronics_data")
    private String electronicsData;
}

智能手机类别:

@AllArgsConstructor
@NoArgsConstructor
@Entity
@Data
@DiscriminatorValue("smartphone")
public class Smartphone extends Electronics{

    @Column
    private String smartphoneInfo;
}

我想把电子学课分成两个不同领域的实体。

共有1个答案

钱稳
2023-03-14

https://docs.oracle.com/javaee/7/api/javax/persistence/DiscriminatorColumn.html

策略和鉴别器列仅在应用了不同继承策略的实体类层次结构或子层次结构的根中指定

根据留档,我不认为此示例中的Electronics类可以为其子类添加额外的鉴别器列。

 类似资料:
  • 问题内容: 目前,我有这样的结构: 它使用联接表与每个子类一个表映射。由于历史原因,我也使用了一个鉴别器,因此当前情况如《 Hibernate手册》第9.1.3节所述 。 问题: 如何为这样的结构扩展映射: 我可以在hibernate映射中吗?什么我需要S’ 问题答案: 未测试, 但根据发布的链接(如果您使用的是hibernate3)

  • 问题内容: 考虑此问题中列出的情况: 在Hibernate中映射多级继承 如何使用注释而不是hbm文件完成此映射? 问题答案: 您具体遇到什么问题?通过联接的子类映射类层次结构非常简单: 更新 (基于Michal的评论)。 如果您确实要使用区分符(并且您应该有 充分的 理由这样做),则可以通过将基于类的表策略与辅助表进行混合来实现: 这种方法的缺点是,您必须为每个映射的属性显式指定表:

  • 我有一个实体照片映射在JPA/Hibernate,有三个不同的孩子(PhotoSpot,PhotoSecteur,PhotoVoie)。我使用了@继承(策略=继承类型。JOINED),一切工作正常的持久化方法,但我不能设法使其工作时,我想删除的照片之一。 我试图通过从父类中删除一个元素来删除一张照片,但我不知道这是否可行。我看了所有其他关于同一主题的帖子,我认为问题可能来自我的子实体有一个@man

  • 问题内容: 假设我有三节课: 当我创建类C的实例时,它将调用超类的构造函数。那么,是否有多个对象正在创建?如果仅创建一个对象,那么super()像另一个类的构造函数如何?super()方法是否在内部创建对象?我所知道的是,构造函数也是一种方法(我可能错了)。 我的问题是: 在这种情况下创建了多少个对象? 如果创建了一个对象,那么Super()如何在内部调用父类的构造函数? 问题答案: 好问题。您要

  • 我以这种方式在实体结构中使用Joined Hibernate继承映射: 我想先保存一个用户,然后在另一个api中保存一个客户,并将该客户映射到第一个用户。所以我尝试用现有的用户id保存一个新客户: 但是,hibernate使用新生成的id(而不是固定传递的id)生成客户,并生成一个新用户。我的问题是:我怎样才能在孩子的父母之后救他?还是反正又有没有救孩子不救父母?

  • 由于某些原因,我无法使Hibernate继承策略=InheritanceType.Joint&onetoMany的组合工作。以下是这些实体。 @实体