2010-01-19 44 views
2

我们有一个要求以用户定义的顺序检索书籍 (例如,假设有3本书 - BookA,BookB,BookC),最终用户希望将其呈现为(BookB,BookA,BookC)或(BookC,BookA,BookB)。如何在用户定义的排序顺序中呈现?

  1. 我们正在考虑添加一个整数列(例如sortColumn)来捕获此订单。如果物品清单很大,这是一个不错的选择吗?

  2. 如果我们采用上述方法,重新计算排序顺序后排序的最佳方法是什么,因为它可能涉及每次书籍上移或下移时更新多个记录。

  3. 假设有1000本书,您如何决定添加新书的'sortColumn'值。

回答

1

如果你使用Hibernate或者JPA这是因为有你的域对象的列表和列表的顺序存储在列一样简单(休眠/ JPA将automanage为你) 然后你可以与List交互以进行重新排序。

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

是的,我们打算使用Hibernate/JPA和假设:

用户 - >有UserBooks的列表,UserBook如果你使用的hbm.xml的有一个用户,一本书,一个订货

我们将@OneToMany列表存储在域对象中,您要在哪里存储订单?你能否详细说明 – Sam 2010-01-19 09:07:10

+0

我试过你的建议,但它似乎对我没有用。基于您的逻辑,如何在数据库中维护订单粘性仍然不清楚。 – Sam 2010-01-21 05:18:06

+0

它存储在iOrdering列中。 Hibernate保存每个UserBook的索引 – 2010-01-21 10:36:00