Wir haben folgende JPA Klasse:Wie kann ich eine Auflistungseigenschaft in JPA dynamisch sortieren?
@Entity
class Supplier {
// ... id property etc.
@OneToMany
@OrderBy("someProperty")
private List<Region> regions;
}
Dies funktioniert im Normalfall in Ordnung. Wir haben jedoch einige mehrsprachige Daten, in denen die Werte in Eigenschaften wie nameEn
, nameDe
, nameZh
gespeichert sind. Die genaue zu verwendende Eigenschaft hängt vom angemeldeten Benutzer ab. Zum Beispiel sollte ein deutschsprachiger Benutzer die Regionen so sehen, als wäre er mit @OrderBy("nameDe")
annotiert worden.
Wie kann ich das erreichen?
Ich bin mir bewusst, ich könnte die Sammlung in meinem Code sortieren, nachdem es geladen wurde, aber dies macht Paginierung der Ergebnisse ziemlich schwierig.
Sie können das nicht in die Annotation einbetten, da die Annotationen bei der Erstellung der EntityManagerFactory für Ihre Persistenzeinheit einmal verarbeitet werden. Was Sie versuchen, ist ähnlich dem Erstellen einer dynamischen Abfrage. –