2016-11-18 1 views
1

Wie wird die Vererbung eines einzelnen Tabellentyps mit Join-Tabellentyp im selben Vererbungsbaum gemischt? Ich verwende nicht Hibernate nur JPA. Ich weiß, dass es keine offizielle Unterstützung für gemischte Vererbung durch Lesen der JPA-Spezifikation gibt. Ich kann die Architektur nicht ändern. Es hat mit Hibernate funktioniert, aber jetzt muss ich dies mit openjpa implementieren. Ich suche nach einer Problemumgehung.Wie vererbt man den Vererbungstyp in JPA?

+0

Sie müssen einen Kontext hinzufügen. Kannst du den Code von dem, was du versuchst, posten? – bradimus

+0

JPA sagt Ihnen deutlich, die Vererbungsstrategie in der Wurzel des Baumes anzugeben, und das ist alles, was es gibt. Wie genau kannst du es mit dieser Einschränkung "mischen"? –

Antwort

1

dies ist für mich arbeiten:

Superklasse:

@Entity 
@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name = "TYPE_DISCRIMINATOR") 
public class A extends SomeClass implements SomeInteface { 


… 
@Id 
@Column(name = "ID", nullable = false, precision = 0) 
public Integer getPk() { 
    return super.getPk(); 
} 
… 

Beachten Sie, dass "Someclass" keine Einheit ist.

Subclass - "JOIN" Vererbung:

@Entity 
@SecondaryTable(name = "A_SECOND_TABLE", pkJoinColumns = @PrimaryKeyJoinColumn(name ="ID")) 
@DiscriminatorValue("BD") 
public class B extends A implements SomeIntefaceB { 
… 

Erstellen einer neuen Tabelle "A_SECOND_TABLE" mit Join auf Superklasse Primary Key "ID". jedes Feld, das nicht in Join-Spalte und erscheint in unserer Tabelle ist wie folgt gekennzeichnet:

@Basic 
@Column(table = "A_SECOND_TABLE", name = "STATUS", nullable = false, precision = 0) 

Hinweis des Tabellenwert.

Subclass - einfache Vererbung Tabelle:

@Entity 
public class C extends A implements SomeIntefaceC {... 

einfache Vererbung einzelne Tabelle.

Verwandte Themen