моя проблема в том, что когда я делаю запрос к базе данных с порядком по startTime, где startTime - это время Joda, он возвращает время, начинающееся в 16:00.
Итак, 16:00 — это ровно 8 часов до полуночи, и по совпадению я живу в Гонконге, и это мой часовой пояс, а часовой пояс Гонконга — 8 часов до полуночи.
Мое поле startTime JPA:
@Index(name = "bookingStartTimeIndex")
@Column(name = "start_time")
@Type(type="org.joda.time.contrib.hibernate.PersistentLocalTimeAsTime")
private LocalTime startTime;
Я использую JPA/Hibernate, и мой запрос в основном состоит в том, чтобы выбрать * где:
order by b.startTime asc
Теперь у меня есть объекты со временем с 9 утра до 6 вечера, хранящиеся в этой таблице. Что возвращается из этого «упорядочения по», так это объекты, начинающиеся с 16:00 до 18:00, а затем с 9:00 до 16:00. Так что, похоже, он каким-то образом решил, что 4 часа дня — это полночь.
Это база данных postgresql, когда я смотрю на свою базу данных, столбец имеет тип данных time_without_time_zone.
Итак, как я могу заставить его заказывать объекты в обычном режиме с 9 утра до 6 вечера?
Обходной путь, который я нашел, состоит в том, чтобы перейти на использование PersistentLocalTimeExact, это работает для меня в условиях, которые я упомянул, и решает все проблемы, которые у меня были с 16:00...
@Index(name = "bookingStartTimeNumberIndex") @Column(name = "start_time_number", nullable = true) @Type(type="org.joda.time.contrib.hibernate.PersistentLocalTimeExact") private LocalTime startTimeNumber;