Filterliste, die in der von der jpa / hibernate-Abfrage zurückgegebenen Entität enthalten ist

8

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

    
Leonardo 21.07.2010, 14:25
quelle

1 Antwort

7
  

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   a name() und ein Array von   %Code%. Ein Parameter wird erlauben   Sie, um das Verhalten der   Filter zur Laufzeit. Jeder Parameter ist   definiert durch parameters() mit a   Name und ein Typ. Sie können auch eine definieren    @ParamDef Parameter für a   gegeben defaultCondition() , 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 @FilterDef   Anmerkung. Wie auch immer, wenn du willst   Zielen Sie die Zuordnungstabelle an, verwenden Sie die    @Filter Annotation.

%Vor%

Siehe auch

Pascal Thivent 21.07.2010, 17:33
quelle

Tags und Links