Ich habe eine einfache jpa-Entität 'ApplicationForm' mit einer Eins-zu-viele-Liste darin:
%Vor%Die in ApplicationForm enthaltene Variable Dictionary ist nur eine weitere einfache Entität mit nur dem Text der Frage. Die entsprechende vom Dictionary zugeordnete Datenbanktabelle lautet:
%Vor%Ich habe mich gefragt, ob es mit jpa oder Hibernate möglich ist, eine Abfrage zum Abrufen einer ApplicationForm-Entität mit einem Dictionary für ein bestimmtes Gebietsschema zu erstellen, z. B. nur für "it". Das wäre leicht genug mit Standard-SQL zu tun, aber ich kann nicht in hql übersetzen.
Wenn nicht möglich, könnten Sie einen alternativen Weg vorschlagen? Ich habe versucht, die Wörterbuchfragenliste manuell zu wiederholen und das nicht benötigte Gebietsschema zu entfernen, aber ist nicht wirklich elegant und auch ich habe einen jpa / Ruhezustandfehler.
Ich hoffe, ich habe mich klar gemacht, und der mitgelieferte Code ist genug.
Danke
Ich habe mich gefragt, ob es mit jpa oder Hibernate möglich ist, eine Abfrage zum Abrufen einer ApplicationForm-Entität mit einem Dictionary für ein bestimmtes Gebietsschema zu erstellen, z. B. nur für "it".
Nicht mit Standard JPA. Aber Hibernate erlaubt es, beliebige Filter auf eine Sammlung zu laden während einer gegebenen Sitzung. Aus dem Hibernate Annotations-Referenzhandbuch:
2.4.8. Filter
Hibernate kann angewendet werden beliebige Filter über Ihren Daten. Diese Filter werden zur Laufzeit angewendet auf einer bestimmten Sitzung. Zuerst müssen Sie definiere sie.
@org.hibernate.annotations.FilterDef
oder@FilterDefs
Filter definieren Definition (en), die von Filtern mit verwendet werden der selbe Name. Eine Filterdefinition hat aname()
und ein Array von %Code%. Ein Parameter wird erlauben Sie, um das Verhalten der Filter zur Laufzeit. Jeder Parameter ist definiert durchparameters()
mit a Name und ein Typ. Sie können auch eine definieren@ParamDef
Parameter für a gegebendefaultCondition()
, um den Standard festzulegen Bedingung zu verwenden, wenn keine definiert sind in jedem einzelnen@FilterDef
. EIN@Filter
(s) kann am definiert werden Klassen- oder Paket-Ebene.Wir müssen jetzt den SQL-Filter definieren Klausel, die auf die Entität angewendet wird laden oder die Sammelladung. %Code% wird benutzt und entweder auf die Entität oder das Auflistungselement
%Vor%Wenn die Sammlung eine Verknüpfung verwendet Tabelle als relationale Darstellung, Vielleicht möchten Sie den Filter anwenden Bedingung zur Assoziationstabelle selbst oder in die Zieleinheitstabelle. So wenden Sie die Einschränkung auf das Ziel an Entität, verwende die reguläre
%Vor%@FilterDef
Anmerkung. Wie auch immer, wenn du willst Zielen Sie die Zuordnungstabelle an, verwenden Sie die@Filter
Annotation.