Google App Engine / Java - ORDER BY不一致

时间:2011-08-31 19:11:18

标签: java google-app-engine jpa bigtable

我在App Engine上使用JPA(我对两者都很新),我目前正面临一种我不理解的行为。

每次刷新页面时,获取的项目的顺序都会改变。

以下是代码段:

Set<Cast> results = new HashSet<Cast>();
EntityManager entityManager = entityManagerFactory.createEntityManager();
Query query = entityManager.createQuery(FIND_ALL_SORTED_BY_DESCENDING_BROADCAST_DATE);
@SuppressWarnings("unchecked")
List<Cast> casts = query.getResultList();
for (Cast cast : casts) {
    if (verifySecondaryFields(cast)) {
        results.add(synchronizeTechnicalFields(cast));
    }
}
entityManager.close();
return Collections.unmodifiableSet(results);

其中FIND_ALL_SORTED_BY_DESCENDING_BROADCAST_DATE实际上是SELECT cast FROM Cast cast ORDER BY cast.broadcastDate DESC

entityManagerFactory是我的存储库类的自动装配成员。

事情是ORDER BY子句似乎被忽略,结果随机出现。你能发现什么是错的吗?

1 个答案:

答案 0 :(得分:2)

设置不保留顺序。列表呢。试试List<Cast> = new ArrayList<Cast>();然后从那里继续。