Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Hibernate InheritanceType.JOINED重写ID_Hibernate - Fatal编程技术网

使用Hibernate InheritanceType.JOINED重写ID

使用Hibernate InheritanceType.JOINED重写ID,hibernate,Hibernate,鉴于以下情况: @Entity @Inheritance(strategy = InheritanceType.JOINED) @Table(name="TOP_TABLE") public class BaseClass implements Serializable { private Long id; @Id public Long getId() { } } // PrimaryKeyJoinColumns @Entity @Table(name=

鉴于以下情况:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name="TOP_TABLE")
public class BaseClass implements Serializable {

    private Long id;

    @Id
    public Long getId() {

    }
}

// PrimaryKeyJoinColumns
@Entity
@Table(name="TABLE_A")
public class ClassA extends BaseClass {

    @Id
    public Long getId() {

    }
}

@Entity
@Table(name="TABLE_B")
// Primary Key Join Columns
public class ClassB extends BaseClass {

    @Id
    public Long getId() {

    }

}
我有两个问题:

  • 在InheritanceType.JOINED中,子类是否可以覆盖父类的id?这是因为:

  • 如果id是通过序列生成的,那么每个子类的id是否可以有单独的序列生成器

谢谢你的帮助


Jason

子类无法重写id,因为id只能在层次结构中定义一次。在JPA 2.0规范中,说明如下:

必须在作为根的实体类上定义主键 实体层次结构的或映射的超类上的(直接或 间接)实体层次结构中所有实体类的超类。 主键必须在实体层次结构中定义一次


此外,没有特定于Hibernate的支持。在继承层次结构的叶子中,@Id唯一可以做的不同的事情是通过为Id列定义不同的名称。

子类不能重写Id,因为Id在层次结构中只能定义一次。在JPA 2.0规范中,说明如下:

必须在作为根的实体类上定义主键 实体层次结构的或映射的超类上的(直接或 间接)实体层次结构中所有实体类的超类。 主键必须在实体层次结构中定义一次

此外,没有特定于Hibernate的支持。唯一一件事,@Id在继承层次结构的叶子中可以做的不同的事情是通过为Id列定义不同的名称