【问题标题】:Data Retrieval is not in the given order?数据检索未按给定顺序?
【发布时间】:2010-11-11 12:17:07
【问题描述】:

大家好 我正在使用spring框架和hibernate与数据库进行通信 我有一个包含一些记录的表,假设 ID 为 1,2,3,4,5 当我尝试进行 HQL 查询以检索按 id asc 排序的数据时 数据以正确的顺序检索,但是当尝试使用增强的 for 循环对数据进行循环时,顺序颠倒了,我不知道为什么???????

List<MyDTO> data = getCurrentSession()
                .createQuery(
                        "from MyDTO where indicator=:indicator order by entityId")
                .setLong("indicator", 10).list();
        System.out.println("First Id In The Query: "
                + data.get(0).getEntityId()); // prints 1

当对它们进行 for 循环时,顺序是相反的

for (MyDTO myObj : data) {
System.out.println("Id: " + myObj.getEntityId());
}
// prints 5,4,3,2,1

任何想法为什么会发生这种行为?

【问题讨论】:

  • 以上似乎是正确的。之后你能展示你对列表的处理吗?
  • 在列表上做一个简单的for循环来sysout每个对象的id
  • @Gary Rowe,我编辑了上面的帖子,有什么帮助吗?

标签: hibernate spring-mvc jakarta-ee


【解决方案1】:

asc 是默认顺序,所以可以省略。

否则它应该按预期工作。确保您正确地迭代列表。

【讨论】:

  • @sword101 这太奇怪了。能否请您打印 data.getClass() 并告诉结果
  • 安装新的tomcat副本后问题解决,代码中似乎一切正常。
  • @sword101 好。我想你可以保留接受的标记,因为我的回答在技术上是正确的,而且我无法看透你的部署环境;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 2019-03-29
  • 2015-02-10
  • 2019-08-06
  • 2019-11-16
  • 2011-02-12
  • 1970-01-01
相关资源
最近更新 更多