- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题是,当我使用 startTime 的顺序对数据库进行查询时,其中 startTime 是一个 Joda 时间,它返回从下午 4 点开始的时间。
现在,下午 4 点距离午夜 12 点刚好 8 小时,巧合的是我住在香港,那是我的时区,香港时区距离午夜 8 小时。
我的 startTime JPA 字段是:
@Index(name = "bookingStartTimeIndex")
@Column(name = "start_time")
@Type(type="org.joda.time.contrib.hibernate.PersistentLocalTimeAsTime")
private LocalTime startTime;
我使用 JPA/Hibernate,我的查询基本上是选择 * where:
order by b.startTime asc
现在,我将时间为上午 9 点到下午 6 点的实体存储在该表中。从这个“order by”返回的是从下午 4 点开始到下午 6 点然后从上午 9 点到下午 4 点的实体。所以看起来它以某种方式决定下午 4 点是午夜。
这是一个 postgresql 数据库,当我查看我的数据库时,colum 的数据类型为 time_without_time_zone。
那么我怎样才能让它在上午 9 点到下午 6 点之间正常订购实体呢?
我发现的解决方法是更改为使用 PersistentLocalTimeExact,这适用于我在我提到的条件下解决了我在下午 4 点遇到的所有问题...
@Index(name = "bookingStartTimeNumberIndex")@Column(name = "start_time_number", nullable = true)@Type(type="org.joda.time.contrib.hibernate.PersistentLocalTimeExact")私有(private)本地时间开始时间编号;
最佳答案
这听起来像是一个数据呈现的问题,而不是一个基本问题,尽管它有点不清楚。
您是说数据库中时间为 0:00 的记录在从数据库中取回时显示为 16:00?如果是这样,那么我认为从数据库中读取日期会有些困惑,并且在 Hibernate 扩展中的某个地方,Joda Time 正在创建 LocalTime
实例,假设数据库时间是 UTC,然后创建 LocalTime
与您本地的时区,因此应用 -8 小时偏移量。
正如 Erwin 所说,在数据库中存储时区是更好的方法,或者如果您不能这样做,则只存储 UTC 日期和/或时间。
我查看了 Joda Time网站,他们推荐 different与您正在使用的原始扩展相比,Hibernate 扩展得到更好的支持。
您也可以尝试在 PersistentLocalTimeAsTime
类上设置断点,看看 LocalTime
是如何构建的。
关于java - JPA/Hibernate order by of a Joda time of the day 在香港无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8644910/
我需要查询 HealthKit 以获取 HKCategoryTypeIdentifierSleepAnalysis 数据,但无法为数量值找到兼容的 HKUnit。 Apple 文档未提及 sleep
我是一名优秀的程序员,十分优秀!