我有一個非常基本的數據模型:一堆Route
s和一堆Location
s。 他們有一個多對多的關係需要一個鏈接表(例如RouteLocation
)。存儲對象在數據庫中的順序
我遇到了一種方法來存儲路徑中位置的順序。我的第一本能是爲Route
表有一個order
列,這個列基本上是一個逗號分隔的字符串,這個路由中的位置的ID是當然的。這意味着我必須在webapp中進行排序(解析字符串,比較ID等)。我寧願讓數據庫系統完成它(例如,ORDER BY
)。
我可以在RouteLocation
表中存儲路徑中位置的索引,然後我可以有一個查詢,如SELECT *, RouteLocation.order FROM Location, RouteLocation WHERE Location.id IN (SELECT RouteLocation.locationId FROM RouteLocation WHERE RouteLocation.routeId = 1234) ORDER BY RouteLocation.order ASC;
。我用這種方法的問題是我使用Hibernate框架,它只是將鏈接表抽象出來。該查詢將是類似的(我忘記了確切的Hibernate SQL方言)SELECT loc from Location loc WHERE loc.route = :route
。
這聽起來不僅僅是一個Hibernate問題,所以這個問題可能更適合SO。我很確定這可以使用Hibernate解決,但我不是這方面的專家。 –
和查詢大概應該是選擇位置。*,RouteLocation.order出發地點,RouteLocation WHERE Location.Id = RouteLocation.LocationId ORDER BY RouteLocation.order ASC –
@DocBrown一點點offtopic,但我的初始查詢應該是正確的。我只需要與id爲1234的路由相關的位置(例如只是一個隨機數)。 – j0ntech