我有一个与JPA关系有关的问题。
是否可以为不同的类定义一个关系?
Ej:Foo
与one-to-one
或many-to-one
类有Boo
关系(或Too
)(两者都可以扩展相同的抽象类)但不是与两者同时发生的关系。
谢谢!
更多详情
这将是:
@Entity
class Foo {
@Id
int id;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="MOO_ID")
Moo moo;
}
Interface Moo{}
@Entity
class Too implements Moo{}
@Entity
class Boo implements Moo{}
我的数据库只需要一个对正确表Too或Boo的引用。
答案 0 :(得分:0)
如果你让Moo成为一个抽象类并指定了一个继承策略,你就可以实现这个目标。
即
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Moo {
@Id int id;
}
然后是Foo:
@Entity
class Foo {
@Id
int id;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="MOO_ID")
Moo moo;
}
并且
@Entity
class Too extends Moo{}
@Entity
class Boo extends Moo{}
这样,Moo参考可以是Boo或Too。
您还应该选择哪种继承策略最适合您的方案。来自TABLE_PER_CLASS,SINGLE_TABLE和JOINED。