Ich habe eine User
-Entität, eine UserToApplication
-Entität und eine Application
-Entität.
Ein einzelnes User
kann auf mehr als ein Application
zugreifen. Und ein einzelnes Application
kann von mehr als einem User
verwendet werden.
Hier ist die Entität User
.
Hier ist die Entität UserToApplication
.
Und hier ist die Entität Application
.
Ich habe das folgende Specification
, das ich verwende, um nach einem User
by firstNm
, lastNm
und email
zu suchen.
Und hier ist das User_
Metamodell, das ich bisher habe.
Nun möchte ich auch eine Liste von Anwendungs-IDs an die Specification
übergeben, so dass ihre Methodensignatur lauten würde:
Also, meine Frage ist, kann ich das Meine aktuelle Und was ich in der neuen Ist es möglich, diese Art von Mapping im Metamodell durchzuführen, und wie könnte ich dieses Ergebnis in meinem @OneToMany
Mapping zum User_
Metamodell für das Collection<Application> applications
Feld meiner User
Entität hinzufügen, und wie würde ich dann in Specification
? Specification
wäre ähnlich der folgenden SQL-Abfrage: Specification
erreichen möchte, wäre etwa so: Specification
?
Ich habe eine Lösung gefunden. Um ein Eins-zu-viele-Attribut zuzuordnen, habe ich im Metamodell folgendes hinzugefügt:
%Vor% Ich musste auch ein Metamodell für die Entität Application
hinzufügen.
Dann könnte ich in meinem Specification
auf den applications
für einen Benutzer zugreifen, indem ich die Methode .join()
für die Instanz Root<User>
verwende. Hier ist das Predicate
Ich bildete.
Es ist auch erwähnenswert, dass mein Specification
, wie es in der Frage geschrieben ist, nicht funktioniert, wenn einer der Eingabewerte leer ist. Eine Null Predicate
, die an die .and()
-Methode von CriteriaBuilder
übergeben wurde, verursacht NullPointerException
. Also habe ich ein ArrayList
vom Typ Predicate
erstellt und dann jedes Predicate
zur Liste hinzugefügt, wenn der entsprechende Parameter nicht leer war. Schließlich konvertiere ich das ArrayList
in ein Array, um es an die Funktion .and()
von CriteriaBuilder
zu übergeben. Hier ist das letzte Specification
:
Tags und Links java jpa spring-data-jpa hibernate spring