EclipseLink Mapping und Polymorphie

sofastar

Grünschnabel
Nach langer und erfolgloser Suche versuche ich mein Glück mal hier...

Ist es irgendwie möglich, mit EclipseLink (in einer RCP) mit JPA Annotationen Polimorphie abzubilden bzw. gibt es eine Möglichkeit, Interfaces zu mappen? Oder können nur implementierte Klassen gemappt werden?

Hier ein Kurzes Beispiel:

Code:
public interface IPerson extends Serializable {
	
	long getId();
	void setId(long id);
	
	String getName();
	void setName(String name);
	
}

public class FamilyParent implements IPerson {
	
	@Id
	@GeneratedValue
	private long id = 0;
	
	@ManyToOne;
	private Family family = null;
	
	//Getters and Setters
	
}

public class FamilyChild implements IPerson {
	
	@Id
	@GeneratedValue
	private long id = 0;
	
	@ManyToOne;
	private Family family = null;
	
	//Getters and Setters
	
}

@Entity
public class Family {
	
	@Id
	@GeneratedValue
	private long id = 0;
	
	@OneToMany(mappedBy="family")
	private List<IPerson> members = new ArrayList<IPerson>();
	
	//Getters and Setters
	
}

Die List<IPerson> kann nicht gemappt werden, weil EclipseLink hier keine entsprechende Klasse findet. Das Interface selbst kann nicht gemappt werden, weil es Serializable zwar erweitert, nicht aber implementiert...

Ich müsste also eine Basisklasse für Person implementieren, und FamilyParent und FamilyChild als Subklassen davon deklarieren....

Was aber, wenn ich zum Beispiel noch ein Interface MarriedPerson habe, das Person erweitert, und ich dann Family-Mitglieder als MarriedPerson kennzeichnen will? Muss ich dann Basisklassen für Married-Parent und Married-Child implementieren?

Das kann mit Polymorphie ziemlich komplex werden...

Gibt es hier irgendeine Designrichtlinie? Vorschläge? Anmerkungen? Lösungen!!? *gg*

Ich hoffe ich habe mich halbwegs verständlich ausgedrückt - falls nicht, versuche ich es gerne noch einmal :)
 
Zurück