2016-08-17 2 views
0

Ich habe eine Situation, wo ich Daten aus drei verschiedenen Tabellen basierend auf einer Bedingung abrufen muss. Eg.Bedingte JoinColumn in Entity JPA/Hibernate

@Entity 
class Order{ 
    id; 
    type; 
    typeId; 

    @Join with boqTable to get the Boq Associated with if type == BOQ and id = typeId 
    @Join with customTable to get custom data associated if type == CUSTOM and id = typeId 
} 

Ich sollte in der Lage sein, die untergeordneten Tabellen mit der Order-Entität einzufügen und zu aktualisieren. Wie kann ich dies mit JPA/Hibernate .. Ich habe viel gesucht und ich konnte keine Lösung, abgesehen davon, es manuell auf der Service-Ebene anstelle der Behandlung am Entity-Modell

+0

Es gibt keine bedingte verbindet. – Kayaman

Antwort

1

Sie können eine von 2 nicht-JPA-konforme, Hibernate-spezifische Funktionen. Wenn die Bedingung statisch ist, sehen Sie sich die Hibernate @Where Annotation an. Siehe Abschnitt 2.4.6:

https://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/

Ansonsten sehen Hibernate Filter:

Hibernate3 hat die Fähigkeit, Filterkriterien vordefinieren und befestigen diese Filter sowohl auf Klassenebene und eine Erfassungsebene . Ein Filter Kriterien können Sie eine Restriktionsklausel ähnlich dem bestehenden "Where" -Attribut für die Klasse und verschiedene Sammlung Elemente definieren. Diese Filterbedingungen können jedoch parametriert werden. Die Anwendung kann dann zur Laufzeit entscheiden, ob bestimmte Filter aktiviert werden sollen und welche ihre Parameterwerte sein sollen. Filter können wie Datenbankansichten verwendet werden, aber sie sind in der Anwendung parametrisiert.

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/filters.html

Verwandte Themen