2010-01-19 47 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