用于 TABLE_PER_CLASS 继承和@OneToMany 映射的 Liquibase 脚本

问题描述 投票:0回答:0

让“A”成为具有 TABLE_PER_CLASS 继承策略的基础实体。让“B”和“C”成为“A”的实体子类。让“D”成为与“A”具有@ManyToOne 关系的实体。让“A”与“D”具有@OneToMany 关系。实体类如下:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class A {
    @Id
    @GeneratedValue(strategy = SEQUENCE, generator = "a_sequence_generator")
    @SequenceGenerator(name = "a_sequence_generator", sequenceName = "sequence_a")
    @Column(name = "id", nullable = false, unique = true)
    private Long id;

    @OneToMany(mappedBy = "a")
    private List<D> dlist;
    
    // other fields and methods
}

@Entity
public class B extends A {
    // fields and methods specific to B
}

@Entity
public class C extends A {
    // fields and methods specific to C
}

@Entity
public class D {
    @ManyToOne
    @JoinColumn(name = "a_id")
    private A a;
    
    // other fields and methods
}

在这种情况下,表“A”、“B”、“C”和“D”的变更集应该是什么样的?令我困惑的是@ManyToOne 映射。由于使用了@JoinColumn,“a_id”必须是有效列,这意味着“A”表需要创建,即使它永远无法实例化。

我们可以避免创建“A”表吗?

java hibernate liquibase liquibase-hibernate
© www.soinside.com 2019 - 2024. All rights reserved.