Encja pobiera listę obiektów do zmapowanej listy w losowej kolejności?

0

Mam encję z mapowaną listą

public class MovieEntity {
...
          @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL)
          private Set<MovieOtherTitle> otherTitles;
...
    }

Lista zawiera 4 obiekty ( w bazie danych)

 ID     COUNTRY        TITLE
1952     USA           string2
1953     USA           string1
1954     USA           string3
1955     USA           string4

Kiedy chcę wyświetlić listę, to okazuje się, że elementy są pobrane w innej kolejności

System.out.println("Titles: " + movie.getOtherTitles());

Titles: [MovieOtherTitle(title=string4, country=USA), MovieOtherTitle(title=string2, country=USA), MovieOtherTitle(title=string3, country=USA), MovieOtherTitle(title=string1, country=USA)]

Przez to, że elementy pobierane są do listy w innej kolejności, psuje to moją aplikację. Można to jakoś ustawić, aby pobierało elementy w prawidłowej kolejności?

2

Nie ma czegoś takiego jak "prawidłowa kolejność" w tym przypadku. Masz tam Set który nie ma określonej kolejności, a rekordy w bazie też nie są nigdy przechowywane w żadnej ściśle określonej kolejności. To ze select z bazy wypisuje ci je w podanej kolejności to tylko "przypadek" wynikający ze sposobu realizacji zapytania. Jeśli chcesz wymusić jakąś kolejność to musisz explicite zdefiniować jaka to ma być kolejność i albo posortować te obiekty po stronie aplikacji albo po stronie bazy.

W tej chwili zarówno zapytanie z bazy może zwrócić ci obiekt w losowej kolejności, zależnej od fazy księżyca, a także Java może je wpakować do jakiegoś HashSeta który z definicji nie trzyma kolejności elementów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1