HQL - porównywanie dwóch obiektów typu sql.Time

0

Cześć. Kombinuję i szukam, jednak nie mogę znależć informacji jak porównać ze sobą dwa obiekty typu sql.Time w Query Hibernate'a. Chciałbym wyszukać obiekty będące po godzinie podanej jako parametr.

W SQLu wygląda to całkiem fajnie. "[...] WHERE ride_time > param_time".

Jeśli ktoś mógłby coś doradzić, bo już mam nawet pomysł, żeby parsowac tego sql.Time na stringa, stringa na tablice liczb i porównywać ze sobą elemenety, co oczywiście nie jest najprawdopodobniej najlepszym rozwiązaniem.

0

Oki, stwierdziłem, że będę wyciągał początkowo wszystkie dane w postaci listy, by następnie utworzyć nowa listę do której przerzuce tylko te, które spełniaja warunek ride_time > time_parametr

Walić optymalność, kiedy nie ma lepszego rozwiązania xd

0

Jak musi być ten hibernate to przynajmniej criteria api bo hql to gowno

1

A musze szybko napisać pracę inżynierską, także nie mam czasu teraz eksperymentować :) - RezyserKinaAkcji 21 minut temu

więcej czasu pójdzie na walkę z Hibernate (KTÓRE UŻYWASZ POZA GŁÓWNYM OBSZAREM PRZEZNACZENIA !!!) niż robić od poczatku z czymś łatwiejszym i łatwiej kontrolowanym. To nie tak, że tylko dzisiaj są kamienie, a jutro będą klarowne wody. Nie będą

Używam w niektórych projektach JPA (nawiasem mówiąc, właśnie standardu JPA a nie dialektu Hibernate), ale jeśli tam jest przetwarzanie obiektów, ich relacji itd. A nie jeśli by były kwerendy natywne, to nie ma sensu. Ty uparcie używasz widelca do zupy, i mówisz, ze nie chcesz zmienić toolsa, bo tzreba się będzie przeuczyć.

Zobacz, jakie **TO **jest proste. Żadnej magicznej wiedzy "pod maską", to co widać, to jest.
https://jdbi.org/

Już czwarty fragment idealnie odpowiada na Twoje pytanie

return handle.createQuery("SELECT * FROM user ORDER BY name")
           .mapToBean(User.class)
           .list();
0
nowyworek napisał(a):

Jak musi być ten hibernate to przynajmniej criteria api bo hql to gowno

Citeria API do kwerend natywnych? Nie wiem czy w ogóle się da, ale jesli się da, byłoby to jedno z gorszych rozwiazań.

BTW byłem kiedyś pozytywnie zarażony Criteria API, ale zdecydowanie mi przeszło.
To dobrze wygląda na przykładach i w prezentacjach, ale nie w codziennym zyciu.

2

@RezyserKinaAkcji:
Ale ty wiesz że nawet jak masz ten JPA/Hibernate to możesz też użyć innych bibliotek, np. Spring JdbcTemplate? Zgaduje że masz apke w Springu jeszcze i nie używasz "bezpośrednio" Hubernate tylko JPA ale tego nie ogarniasz :D

2

Dlaczego korzystasz z takich staroci jak klasa java.sql.Time? Od tego jest LocalTime, które jest mapowane na SQL-owe TIME. W HQL-JPQL jak najbardziej działa porównanie z klasą Time, przypuszczam, że błąd jest gdzie indziej. Dla przykładowej encji:

@Entity
class Entity{

...
private Time rideTime;
...
}

masz zapytanie

List<Entity> result = em.createQuery("select e from Entity e where e.rideTime > :tt", Entity.class).setParameter("tt", paramTime).getResultList();

Ciekawostka, gdyś chciał wyciągnąć tylko kolumnę z typem Time to wynik trzeba rzutować ... na java.util.Date:

List<Date> result = em.createQuery("select e.rideTime from Entity e where e.rideTime > :tt", Date.class).setParameter("tt", paramTime).getResultList();

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