Интерфейс между двумя связанными объектами JPA - PullRequest
2 голосов
/ 01 мая 2010

Сценарий такой, как показано ниже (показаны таблицы)

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, но безрезультатно. Все еще говорит "доставка ссылается на неизвестное лицо"

Есть идеи? заранее спасибо

1 Ответ

1 голос
/ 01 мая 2010

Как насчет использования суперкласса 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;

    // ...
}
...