gpt4 book ai didi

java - 有什么方法可以继承不是@MappedSuperclass 的实体?

转载 作者:行者123 更新时间:2023-11-29 03:00:27 26 4
gpt4 key购买 nike

假设我有一个 JPA 实体:

@Entity
@Table(name = "PARENT")
public class Parent {
// ...
}

有没有办法,也许是特定于 Hibernate 的,在单独的表中创建 Parent 的子类?

@Entity
@Table(name = "CHILD")
public class Child extends Parent {
// ...
}

主要思想是在项目之间共享基础包中的一组通用实体类,并且仅在需要某些特定于项目的属性时才扩展它们。

最佳答案

Hibernate 继承:注解映射

@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)注释父类。 Hibernate 文档(对于版本 4.3,新的 5.0 文档到目前为止似乎缺少此部分)在 Chapter 10 中对此进行了介绍。和 section 5.1.6手册。

在每个具体类方案一个表中,每个具体类都映射为普通持久类。因此我们有 3 个表; PARENT, CHILD 来持久化类数据。在该方案中,子类的映射重复了父类的属性。

以下是每个子类一个表方案的优点和缺点。优点 这是最容易实现的继承映射方法。

以下是我们使用 JPA 注释映射父实体类和子实体类的示例。

@Entity
@Table(name = "Parent")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Parent {

// Getter and Setter methods,
}

@Inheritance – 定义用于实体类层次结构的继承策略。它在作为实体类层次结构根的实体类上指定。

@InheritanceType – 定义继承策略选项。 TABLE_PER_CLASS 是一种为每个具体类映射表的策略。

@Entity
@Table(name="Child")
public class Child extends Parent {

// Getter and Setter methods,
}

关于java - 有什么方法可以继承不是@MappedSuperclass 的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35346265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com