【发布时间】:2012-08-26 07:29:26
【问题描述】:
是否可以在不使用SortedSet 接口、不使用@OrderBy 注释的情况下使用休眠在sql 中对Set 集合进行排序——只使用条件的addOrder。
我试过了,它添加了 order by 子句,但集合没有排序。
我使用休眠 3.4。
【问题讨论】:
标签: hibernate jpa fluent-nhibernate jpa-2.0 hibernate-mapping
是否可以在不使用SortedSet 接口、不使用@OrderBy 注释的情况下使用休眠在sql 中对Set 集合进行排序——只使用条件的addOrder。
我试过了,它添加了 order by 子句,但集合没有排序。
我使用休眠 3.4。
【问题讨论】:
标签: hibernate jpa fluent-nhibernate jpa-2.0 hibernate-mapping
如果您将“Set”更改为“List”并将“List”中不存在的方法放入等效项,我们将正常工作。
问候,
【讨论】:
NHibernate 集合没有“顺序”,即使集合映射支持排序依据。见 Ayende 的explanation:
请注意,[order-by] 不适用于泛型集合,一般来说, 你不想依赖那些排序属性,你想使用 所选集合的自然属性。集是,由 定义,无序的唯一元素集。
您可以将 order by 子句附加到底层 SQL,但是当 NHibernate 构建集合时该顺序会丢失。当然,使用“有序”集合或其他集合类型(袋子或列表)也可以。
【讨论】: