Znalezienie najnowszej książki - LocalDateTIme

Znalezienie najnowszej książki - LocalDateTIme
MU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

Cześć. Każdy obiekt typu Book ma w sobie LocalDateTime. Chciałbym znaleźć spośród wszystkich ksiażek, które znajdują się w bazie, tę która jest najnowsza. Jak mogę to zrobić?

danek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 797
0

albo zapytaniem SQL na poziomi bazy (posortować po dacie) albo pobrać wszystkie do listy i w javie posortować.

MU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

Tylko w jaki sposób właśnie posortować? Interesują mnie w sumie te dwie opcje. Także dla obu chętnie poznam odpowiedź.
Jedyną opcję jaką znalazłem dla sortowania z listy to Collections.sort, czy jest ona dobra? A jak za pomocą zapytań SQL?

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
1

Vavr:
Option<Book> newest = List.of(book1, book2).maxBy(Comparator.comparing(Book::getDate));

SQL: https://stackoverflow.com/questions/11128194/oracle-select-most-recent-date-record

Java:
Optional<Book> newest = Lists.newArrayList(book1, book2).stream().max(Comparator.comparing(Book::getDate));

Delor
  • Rejestracja: dni
  • Ostatnio: dni
0

Jeżeli tylko jeden, najmniejszy wynik to nie trzeba całości sortować a po prostu go znaleźć: Collections.max.

W SQL:

Kopiuj
SELECT * FROM Books WHERE BookDate = (SELECT max(BooksDate) FROM Books);

Ewentualnie LIMIT 1 gdyby było kilka książek z najnowszą datą.

MU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

Źle napisałem w pytaniu. Chodzi mi o kilka najnowszych pozycji.
Próbowałem za pomocą findAllByOrderByDateOfCreation ale niestety nie działa.

Delor
  • Rejestracja: dni
  • Ostatnio: dni
1

Czyli nie jedną a kilka? Np. najnowsze trzy?
No to jednak sortowanie.

piotrpo
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3303
1

Można tak:

Kopiuj
public class Book {
    public final LocalDateTime localDateTime;

    public Book(LocalDateTime localDateTime) {
        this.localDateTime = localDateTime;
    }
    
    public static List<Book> fromNewest(List<Book> books){
        return books.stream().sorted((book1, book2) -> book2.localDateTime.compareTo(book1.localDateTime)).collect(Collectors.toList());
    }
}

W

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.