2010-04-30 6 views
2

Le scénario est comme ci-dessous (tableaux indiqués)Interface entre deux entités JPA liées

Delivery table 
------ 
id channelId type 
10 100   fax 
20 200   email 

Fax table 
---- 
id number 
100 1234567 
101 1234598 

Email table 
----- 
id email 
200 [email protected] 
201 [email protected] 

fondamentalement une relation biunivoque entre la livraison et l'entité de canal mais étant donné que chaque canal en béton (fax, e-mail) a différents membres Je veux créer une interface générique (canal) entre les deux entités et l'utiliser pour la relation @OneToOne. Il me semble un scénario simple où beaucoup d'entre vous ont déjà vécu, mais je suis incapable de réussir. J'ai essayé de mettre cette chose TargetEntity mais pas d'utilisation. Toujours dit "la livraison fait référence à une entité inconnue"

Des idées? merci à l'avance

Répondre

1

Qu'en est-il en utilisant une super classe abstract pour la Channel et une stratégie d'héritage TABLE_PER_CLASS? Quelque chose comme ceci:

@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; 

    // ... 
} 
+0

Pascal - merci. C'est ce que j'ai pensé après avoir posté la question et tout en rentrant à la maison :) Je reviendrai et posterai ce qui réussira ou si j'ai encore quelques problèmes. merci encore – OpenSource

+0

Je viens de créer la superclasse concrète (livraison) et fait fax et e-mail comme sous-classes. Cela fonctionne pour ma situation. Si besoin je peux encore leur faire implémenter une interface pour un polymorphisme plus tard. Merci. – OpenSource

Questions connexes