我想使用混合@Inheritance策略,但Hibernate不支持它 有没有办法实现 JOINED 继承而没有实际的类继承。 例如:
@Entity
@Table(name="A")
@Inheritance(strategy=InheritanceType.JOINED)
public class A {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ID_SEQ")
private Long id;
//getters
//setters
}
@Entity
@Table(name="B")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class B {
@Id
private Long id;
//getters
//setters
}
所以,基本上在B
我只想引用A
中生成的@Id,而不是从A
延伸。
答案 0 :(得分:1)
我找到了解决方案。 JPA不允许您合并@Id
和@OneToOne
。但是,@MapsId
注释可以解决问题:
@Entity
public class A {
@Id
private Long id;
//getters
//setters
}
@Entity
public class B {
@Id
private Long id;
@MapsId
@OneToOne(optional=false, fetch=FetchType.EAGER)
@JoinColumn(nullable=false, name="id")
private A a;
//getters
//setters
}
答案 1 :(得分:0)
我认为您可以通过建立@OneToOne关系或@OneToMany来实现此目的,并将表名称指向此
@Id @OneToOne
@JoinColumn(name = "id")
private A a;