如何指示Hibernate使用除本地时区以外的时区将Java日期映射到Oracle DATE
列以及从哪个列映射Java日期?如何指示Hibernate使用除本地时区以外的时区将Java日期映射到Oracle DATE列?
回答
我不确定,但我认为您必须使用OracleConnection.setSessionTimeZone(String regionName)
方法来设置会话时区。
要在Hibernate处理之前在OracleConnection
上这样做,最简单的方法是提供和使用o.h.c.ConnectionProvider
的自定义实现。
看到这个related question。
休眠不允许通过注释或任何其他方式指定时区。如果您使用日历而不是日期,则可以使用HIbernate属性AccessType实施解决方法并自行实施映射。更高级的解决方案是实现一个自定义的UserType来映射日期或日历。这个博客文章解释了两种解决方案:http://dev-metal.blogspot.com/2010/11/mapping-dates-and-time-zones-with.html
Joobik在你的文章中声称Hibernate翻译给定Date的时区:“因此,Hibernate做的是使用其JVM的时区调度(它运行在CET中)来转换独立于时区的java.util .Date到我们DB记录中的时区特定的日期字符串。因为CET比格林威治标准时间早一个小时,所以我们的DB日期已经增加了一个小时。“但是,根据http://stackoverflow.com/questions/4123534/before-writing-a-java-date-to-an-sql-timestamp-column-does-jdbc-translate-the-da/4124620#4124620,它是转换时区的JDBC驱动程序,而不是Hibernate。 – 2010-12-09 21:02:28
- 1. 使用Hibernate将Oracle日期映射到Java对象
- 2. 使用Nhibernate将Oracle日期映射到日期时间3.2
- 3. Java 8,Hibernate和PostgreSQL - 如何使用时区存储日期?
- 4. 如何将Twitter时区映射到Joda时区
- 5. 使用date()函数在特定时区显示时间/日期
- 6. java hibernate - 我如何将date列映射为datetime?
- 7. 如何将Listview日期转换为本地时区?
- 8. 日期转换为本地时区
- 9. 如何使用rails3将本地时区的日期保存到db?
- 10. Java从数据库映射到休眠映射的日期(时区问题和夏令时)
- 11. Oracle日期比较和时区
- 12. 区分使用UTC和本地日期时间的列
- 13. 使用DateTime.ParseExact时,如何指定给定日期的时区?
- 14. 将位置映射到时区
- 15. Hibernate可以将Java日历对象映射到SQL TIMESTAMP列吗?
- 16. 将UTC日期时间显示到用户定义的时区
- 17. 如何得到日期和时间尊重用户的时区
- 18. 如何使用缩短的时区显示日期时间?
- 19. Javascript:如何将特定时区日期转换为不同时区日期?
- 20. 转换Postgres的时间戳(+时区),以Date对象[Java脚本]
- 21. 如何在oracle中获取日期格式的国家/地区时区?
- 22. 如何使用日历的时区设置日期对象的时区
- 23. 如何将sql日期映射到LocalDate
- 24. 将Oracle类型映射到Hibernate类型
- 25. Linux- Windows时区映射?
- 26. Oracle中的时区日期格式
- 27. Java:使用时区变量将字符串转换为日期
- 28. 脚本死亡() - 日期时间::时区::本地例如
- 29. 如何将java日期转换为基于时区的日期对象?
- 30. JAX-WS可以将XSD日期(xs:dateTime)映射到Java日历吗?
也许我只是将日期标准化为目标时区,然后再将它交给Hibernate存储在表中。 – 2010-11-06 14:48:40
@Derek听起来更容易。 – 2010-11-06 19:10:15
Pascal,JDBC是否将JVM时区转换为数据库会话时区?我只是问这个问题在http://stackoverflow.com/questions/4123534/before-writing-a-java-date-to-an-sql-timestamp-column-does-jdbc-translate-the-da。 – 2010-11-08 11:53:35