У меня есть класс спящего режима, как это:сортировка коллекции в спящем режиме со значением объекта, который может быть нулевым
public class UserActivityLog implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Users users;
private Servers servers;
private Date time;
private String event;
}
сортировать коллекцию объектов UserActivityLog, используя сортировку спящего режима. вот мои критерии Hibernate:
criteria.add(Restrictions.ge(sortField, new Timestamp(startDate.getTime())));
//add one day to the real end date for it to be considered in criteria
Date eDate = getEndDate(endDate);
criteria.add(Restrictions.le(sortField, new Timestamp(eDate.getTime())));
if (searchByUser >= 0) {
criteria.add(Restrictions.eq("users.id", searchByUser));
}
if (searchByHostId >= 0) {
criteria.add(Restrictions.eq("servers.id", searchByHostId));
}
if (!searchByEvent.isEmpty()) {
criteria.add(Restrictions.like("event", searchByEvent, MatchMode.ANYWHERE));
}
if(sortColumn.equals("username")) {
sortColumn = "users.username";
criteria.createAlias("users", "users");
}
else if (sortColumn.equals("hostName")) {
sortColumn = "servers.hostName";
criteria.createAlias("servers", "servers");
}
//specify the sorting oder
if(SortDirection.asc.equals(sortDirection)) {
criteria.addOrder(Order.asc(sortColumn));
} else {
criteria.addOrder(Order.desc(sortColumn));
}
List<Object> allRows = (ArrayList<Object>) criteria.list();
Сервера свойство UserActivityLog может быть пустым. Когда у коллекции есть объект с серверами null, и если я сортирую коллекцию с использованием hostName, которая является свойством в объекте Servers, сортированная коллекция не содержит этот объект с серверами = null. Есть ли причина для этого или я делаю что-то неправильно?
Update: Вот зимуют запрос:
select count(*) as y0_ from USER_ACTIVITY_LOG this_ inner join SERVERS servers1_ on this_.HOST_ID=servers1_.ID
where this_.TIME>='2014/9/16' and this_.TIME<='2014/9/25' order by servers1_.HOST_NAME asc
Я не думаю, что это так, потому что я не установил критерии поиска Id хоста при сортировке. Означает, что если условие (searchByHostId> = 0) было неверным. – devC
Кроме того, начальная загрузка данных сортирует коллекцию по времени по умолчанию. В это время я вижу пустой объект сервера. Даже когда я сортирую по другому столбцу, он есть. Проблема возникает только при сортировке по имени хоста. – devC
Ну, это не сорт. Сортировка не удаляет запись из результата. – DiogoSantana