Jestem obecnie tworzenie Map<String, Map<LocalDate, Integer>>
takiego, gdzie Integer
reprezentuje sekundach:Jak uzyskać niestandardowy typ zamiast Integer podczas korzystania z Collectors.summingInt?
Map<String, Map<LocalDate, Integer>> map = stream.collect(Collectors.groupingBy(
x -> x.getProject(),
Collectors.groupingBy(
x -> x.getDate(),
Collectors.summingInt(t -> t.getDuration().toSecondOfDay())
)
));
Jak mogłem zamiast stworzyć Map<String, Map<LocalDate, Duration>>
?
Zauważam, że ['java.time.Duration'] (https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html) nie ma' toSecondOfDay() 'metoda. Czy używasz innego typu lub jest to błąd dla 'getSeconds()'? –
@DidierL Używam LocalTime do zapisywania czasu trwania, Wygląda ładniej w DBMS. – Alex78191
Nie sądzę, że dobrym pomysłem jest niewłaściwe użycie typu Java ze względu na reprezentację bazy danych. Zamiast tego należy użyć konkretnego konwertera, aby odwzorować wybrany typ bazy danych - jeśli domyślna konwersja nie działa. –