Y at-il une configuration Hibernate (j'espère une annotation sur un champ @Column mappé de classes) qui me permettrait de trier une collection d'entités associées à l'entité chargée par une colonne donnée de cette entité. load (Entity.class, Id) est appelé? Par exemple si j'avais un EntityA qui contenait une association OneToMany à un EntityB. Je souhaite que EntityB soit trié dans l'ensemble renvoyé par Hibernate.Configuration de la colonne de tri de l'entité Hibernate
Répondre
session.load() charge une instance d'entité unique. Aucun tri n'est impliqué.
Mise à jour (basé sur modifier question):
@OrderBy("column_name")
peut être utilisé pour trier les éléments de collecte au sein de l'entité par colonne donnée; mais qui n'a de sens que pour les collections qui maintiennent leur ordre (par exemple la liste, non défini):
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@OrderBy("name")
private List<EntityB> headlines = new ArrayList<Entity>();
Non, vous pouvez sélectionner la commande uniquement au niveau de la collection (@OrderBy) ou throug hql ou critères api. Session.load ne charge pas une liste, seulement un seul objet.
Vous pouvez trier une liste d'entités lorsque vous les extrayez de la base de données en utilisant la méthode addOrder() sur les critères.
Si vous avez une classe parente avec une liste des enfants, vous pouvez commander les enfants avec l'annotation @OrderBy (voir Hibernate Annotations - Collections
je @Sort et une collection SortedSet pour cartographier mon association qui exigeait que mon entité mettre en œuvre une interface comparable (int compareTo (méthode T)).
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@Sort(type=SortType.NATURAL)
private SortedSet<Entity> headlines = new TreeSet<Entity>();
une raison pour laquelle c'est une mauvaise solution? – Dougnukem
Si 'headlines' est créé en mémoire, ce n'est pas une mauvaise solution. Chaque scénario est différent mais, en général, s'il est chargé à partir d'une base de données, vous voudriez laisser la base de données faire le tri pour vous pour des raisons de performances. – egallardo
- 1. Tri par chaîne nom colonne
- 2. Tri personnalisé d'une colonne DataSet
- 3. Tri de la musique
- 4. Personnalisation de la génération de séquence Hibernate
- 5. SQLite - question de tri
- 6. NHibernate renommer automatiquement le nom de la colonne en C#
- 7. Conversion de la configuration XML en annotations
- 8. colonne Accès de la Collection de Collection utilisant le mappage Hibernate
- 9. Obtention de la longueur de colonne à partir des mappages Hibernate?
- 10. Package de mappage Hibernate
- 11. Erreur Hibernate: impossible de résoudre la table
- 12. Tri DataGridView avec des valeurs nulles dans la colonne DateTime
- 13. configuration de la construction
- 14. tri colonne DataTable dans l'ordre ASCII, non
- 15. Fonction de tri de la table jQuery tri uniquement à sens unique
- 16. Direction de tri initiale DataGridViewColumn
- 17. Hibernate Search et Lucene: impossible de déterminer le type de tri
- 18. Fonction de tri personnalisée - de SQL Server
- 19. configuration de la structure de la carte
- 20. JSP Afficher la page de tri Page Recharger
- 21. Impossible de grouper par colonne la colonne
- 22. MySQL colonne ENUM de la colonne anothertable
- 23. configuration source de données dans l'application autonome lors de l'utilisation Hibernate
- 24. Comment empêcher le tri de la vue de la grille de données
- 25. Exportation de la configuration IIS
- 26. Centralisation de la configuration Eclipse
- 27. Voir le rapport de tri DATETIME
- 28. Comment afficher une colonne de date d'aujourd'hui, la colonne de temps, colonne de date précédente, colonne de temps
- 29. Bloc d'application de gestion de la configuration
- 30. Paramètres de configuration de la réplication IIS7
je SortedSet et utilisé l'annotation @Sort (mais quelqu'un sur stackoverflow pensé que c'était une mauvaise réponse, toute idée pourquoi?) – Dougnukem
@Dougnukem je me rends compte c'est un vieux post mais en espérant que ceci aide quelqu'un d'autre: '@ Sort' est une 'mauvaise' idée parce que la commande arrive s sur le serveur d'applications. Avec '@ OrderBy', la liste est triée sur le serveur de base de données. Généralement, il est préférable de laisser la base de données gérer le tri, car c'est l'un de ses points forts. – egallardo