方案如下(显示的表格)
Delivery table
------
id channelId type
10 100 fax
20 200 email
Fax table
----
id number
100 1234567
101 1234598
Email table
-----
id email
200 a@a.com
201 b@b.com
基本上是交付和渠道实体之间的一对一关系,但由于每个具体渠道(传真,电子邮件)都有不同的成员,我想在两个实体之间创建一个通用接口(通道)并将其用于@OneToOne关系。在我看来这是一个很简单的场景,你们很多人可能已经经历过,但我无法成功。我试过把那个targetEntity的东西但没有用。仍然说“交付引用了一个未知的实体”
有什么想法吗?提前谢谢
答案 0 :(得分:1)
为abstract
和Channel
继承策略使用TABLE_PER_CLASS
超类怎么样?像这样:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Channel {
@Id
@GeneratedValue
private Long id;
// ...
}
@Entity
public class Fax extends Channel {
}
@Entity
public class Email extends Channel {
}
@Entity
public class Delivery {
@Id
@GeneratedValue
private Long id;
@OneToOne
private Channel channel;
// ...
}