Google App Engine / Java - несовместимый ORDER BY - PullRequest
2 голосов
/ 31 августа 2011

Я использую JPA поверх App Engine (я новичок в обоих), и в настоящее время я сталкиваюсь с поведением, которое я не понимаю.

Каждый раз, когда я обновляю страницу, порядок выборкиизменения элементов.

Вот фрагмент кода:

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 - это элемент с автосвязью в моем хранилищеclass.

Дело в том, что предложение ORDER BY, похоже, игнорируется, и результаты отображаются случайным образом.Можете ли вы определить, что не так?

1 Ответ

2 голосов
/ 01 сентября 2011

Наборы не сохраняют порядок. Списки делают. Попробуйте List<Cast> = new ArrayList<Cast>(); и продолжайте оттуда.

...