2010-01-19 4 views
2

Nous avons besoin de récupérer des livres dans un ordre défini par l'utilisateur (par exemple, en supposant qu'il y ait 3 livres - BookA, BookB, BookC), il est possible qu'un utilisateur final souhaite que cela soit rendu (BookB, BookA, BookC) ou (BookC, BookA, BookB).Comment rendre dans un ordre de tri défini par l'utilisateur?

  1. Nous envisageons d'ajouter une colonne entière (par exemple sortColumn) pour capturer cet ordre. Est-ce une bonne option, si la liste des articles va être énorme? Si nous suivons l'approche ci-dessus, quelle est la meilleure façon de recalculer l'ordre de tri après la commande, car cela peut impliquer la mise à jour de plusieurs enregistrements chaque fois qu'un livre est déplacé vers le haut ou vers le bas.

  2. En supposant qu'il existe 1000 livres, comment décidez-vous de la valeur 'sortColumn' pour un nouveau livre qui est ajouté.

Répondre

1

si vous utilisez Hibernate ou JPA il est aussi simple que d'avoir une liste sur votre objet de domaine et stocker l'ordre de la liste dans une colonne (Hibernate/JPA automanage pour vous) Ensuite, vous pouvez interagir avec List pour faire le réordonnancement.

utilisateur-> a la liste des UserBooks, un UserBook a un utilisateur, un livre et une commande

si vous utilisez hbm.xml de:

<list name="books" lazy="true" cascade="all-delete-orphan"> 
     <key column="iUserBookId"/> 
     <index column="iOrdering"/> 
     <one-to-many class="foo.bar.UserBook"/> 
    </list> 
+0

Oui nous avons l'intention d'utiliser Hibernate/JPA et en supposant nous stockons @OneToMany Liste dans l'objet de domaine, où exactement voulez-vous que nous stockons la commande? Pouvez-vous élaborer – Sam

+0

J'ai essayé votre suggestion et cela ne semble pas fonctionner pour moi. Il n'est toujours pas clair sur la façon dont la rigidité de l'ordre sera maintenue dans la base de données en fonction de votre logique. – Sam

+0

Il est stocké dans la colonne iOrdering. Hibernate persiste l'index de chaque UserBook –

Questions connexes