Est-il possible (en utilisant Hibernate et JPA2 Criteria Builder [1]) de classer par résultat d'une méthode plutôt que par membre d'une entité?JPA2 + Hibernate + Ordonner par
public class X { protected X() {} public String member; public String getEvaluatedValue() { // order by return "a status calculated with various members"; } }
Ce que je veux obtenir est ordre par le résultat de getEvaluatedValue(). Est-ce possible?
Merci à l'avance.
EDIT: Réponse ajoutée.
Je ne suis pas en utilisant @Formular, mais
EntityManager em = ...; QueryBuilder builder = em.getQueryBuilder(); SomeQueryClass query = builder.createQuery(MyTargetClass.class); query.orderBy(builder.asc(... some code...));
Je croyais que c'est JPA2 simple et certainement vous avez raison, il n'y a aucune chance de commander des données dynamiques. Mais je peux être autorisé à spécifier un ordre par bloc avec une instruction if-else ou autre (définie avec mon QueryBuilder), n'est-ce pas?
[1] http://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html_single/#querycriteria
Il est bien sûr qu'un exemple. Le problème est que je dois calculer un statut d'événement, qui dépend de divers membres. Parce qu'il est calculé, il n'a pas de sens de le stocker dans la base de données juste à des fins de tri. – Jan
@Jan Oui, je suis d'accord. Mais je ne pense pas que la base de données ferait un bon travail pour trier le résultat de toute façon (à cause du manque d'index). Je vais creuser un peu plus car je crois comprendre que vous utilisez une '@ Formula' et non une version standard JPA2.0 (donc il y a peut-être un mode Hibernate). –
voir le post initial pour réponse – Jan