我有一个非常基本的数据模型:一堆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