【问题标题】:Hibernate Set and sorting issueHibernate Set和排序问题
【发布时间】:2012-08-23 10:18:57
【问题描述】:

在我的实体中,我目前有这样的映射:

private Set<Sth> sths;

所以当我使用criteria.addOrder(Order.asc(Sth.ID))

然后hibernate使用order by id asc生成查询,但是集合中的元素 没有排序(我遍历它们进行检查)-我认为在这种情况下,hibernate 将使用某种排序集实现(我不希望数据总是被排序)。

但是如果我使用..

@OrderBy(Sth.ID)
private Set<Sth> sths;

Hibernate 将生成完全相同的 sql 查询,但这次对数据进行了排序。 所以我的问题是 - 这是一个错误吗?我正在使用休眠 3.4。

使用 OrderBy 注释对我来说是可以接受的,但也许我不想总是按此属性进行排序,所以我宁愿在条件查询中给出排序指令而不是在注释中。

有什么想法吗?它在更高版本的hibernate中是否以同样的方式工作?

【问题讨论】:

标签: hibernate hibernate-criteria hibernate-annotations


【解决方案1】:

阅读于http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/collections.html#collections-sorted

甚至可以在运行时使用集合过滤器()按任意标准对关联进行排序:

sortedUsers = s.createFilter( group.getUsers(), "order by this.name" ).list();

其中 group.getUsers() 是您的查询结果。

问候

【讨论】:

  • 是的,但是我必须在我之前返回的列表的每个元素上调用它。根据您的示例,我有一个 List。这不是我真正需要的。我需要的是让我们说“有可能有条件地打开@OrderBy 注释功能”。
猜你喜欢
  • 2011-11-10
  • 2021-11-11
  • 1970-01-01
  • 2018-04-18
  • 2012-06-14
  • 2013-07-20
  • 2010-11-05
  • 1970-01-01
  • 2010-10-15
相关资源
最近更新 更多