Почему параметр CompareTo всегда равен нулю при сортировке списка

1

Вот мой код в ManagedBean:

public List posortujGrupe(Set<Uczestnik> sm) {
    List sortedList2 = new ArrayList(sm);
    System.out.println("^^^^^^^^^^1");
    for(int i = 0 ; i < sortedList2.size() ; i++)
        System.out.println("i: "+i+" -> "+((Uczestnik)(sortedList2.get(i))).getStatusUczestnictwa());
    System.out.println("^^^^^^^^^^2");
    Collections.sort(sortedList2);
    return sortedList2;
}

Он должен отсортировать список, отображаемый на странице jsf

Вот мой код в классе Uczestnik:

public class Uczestnik  implements java.io.Serializable, Comparable<Uczestnik> {
     (...)
     private String statusUczestnictwa;
     (...)
     public Uczestnik(..., String statusUczestnictwa, ...){
          (...)
          this.statusUczestnictwa = statusUczestnictwa;
          (...)
     }

     (...)

     public String getStatusUczestnictwa() {
          return this.statusUczestnictwa;
     }

     public void setStatusUczestnictwa(String statusUczestnictwa) {
         this.statusUczestnictwa = statusUczestnictwa;
     }

     (...)

     @Override
     public int compareTo(Uczestnik o) {
          System.out.println("0: "+ o.statusUczestnictwa);
          System.out.println("t: "+ this.statusUczestnictwa);
          if(o.statusUczestnictwa == null || this.statusUczestnictwa == null){
              if(o.statusUczestnictwa == null && this.statusUczestnictwa == null)
                    return 0;
              else{
                  if(o.statusUczestnictwa == null)
                       return 1;
                  else
                       return -1;
              }
          }   
          else{
              if(o.statusUczestnictwa == null && this.statusUczestnictwa == null)
                   return 0;
              else
                   return this.statusUczestnictwa.compareTo(o.statusUczestnictwa);
          }
     }
 }

Это класс genateted с помощью hibernate, где я добавил Comparable.

И это мой вывод в консоли:

^^^^^^^^^^1
i: 0 -> 2
i: 1 -> 3
i: 2 -> 4
i: 3 -> 1
^^^^^^^^^^2
0: null
t: 3
0: null
t: 4
0: null
t: 1

Все объекты "o" из Uczestniks в функции compareTo в классе Uczestnik всегда равны нулю. Как я могу это исправить?

  • 0
    Я делаю то же самое с другим классом, и он отлично работает, я не знаю, что здесь не так ...
  • 0
    @geert3 geert3 это работает, спасибо большое. До сих пор не знал, почему в одном классе это должно быть, а в другом не ... странно.
Показать ещё 1 комментарий
Теги:
hibernate
sorting
compareto

1 ответ

0
Лучший ответ

Попробуйте заменить o.statusUczestnictwa на o.getStatusUczestnictwa() внутри compareTo. Возможно, есть какая-то спящая ленивая загрузка, которая возится с вами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню