J'ai une classe dit: "ClassA" qui a une collection de "ClassB"Mise en veille prolongée @OrderBy avec classe référencée
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "COLUMN_NAME")
private List<ClassB> lotsOfClasses;
"ClassB" a une classe mappée "ClassC" avec annotations cartographiques pures et simples:
public class ClassB {
...
@ManyToOne
@JoinColumn(name="AD_POINT_ID")
private ClassC classC;
...
}
Comment puis-je ajouter une annotation @OrderBy à la collection de ClassA à ClassB, de sorte que la collection est ordonnée par la propriété « nom » de ClassC
comme ceci:Tout ce que j'obtiens, ce sont les exceptions Oracle qui disent que la classe C est inconnue.
Toute aide ici serait géniale, car elle m'embête vraiment pour le moment.
P.S. Je devrais aussi mentionner que l'utilisation de l'annotation OrderBy sur la collection comme ceci: @OrderBy (clause = "classC asc") (ie sans le .name sur classC) Je reçois une instruction SQL valide, qui utilise la colonne ID (le clé primaire) de classC à commander par.
Cheers, Mark
Comme suggéré par Jiří Vypědřík vous pouvez implémenter l'interface java.util.Comparator. Dans la méthode de comparaison implémentée, vous pouvez implémenter la logique pour faire référence à l'objet Hibernate Mapped sans problème et renvoyer la valeur int en conséquence. Cependant, ceci n'utilisera pas la commande sur la base de données Oracle mais le tri en mémoire (JVM) à la place. – prageeth