与java.util.Date和java.sql.TimeStamp冲突
我面临着一个独特的问题与java.util.Date和java.sql.TimeStamp冲突,java,resultset,Java,Resultset,我面临着一个独特的问题 我正在查询一个数据类型(在oracle中)为DATE的数据库字段。我正在以rs.getObject(“myDate”)的形式从resultSet中检索该值。我们有两个配置相同的设置。在一个设置中,当我编写rs.getObject(“myDate”).getClass()时,我正在查找java.sql.TimeStamp,而在另一个设置中,它返回java.util.Date。我面临的问题是,当它返回日期对象时,它忽略了时间,只返回日期部分 我认为可以使用此连接属性控制此行为
我正在查询一个数据类型(在oracle中)为DATE的数据库字段。我正在以rs.getObject(“myDate”)的形式从resultSet中检索该值。我们有两个配置相同的设置。在一个设置中,当我编写rs.getObject(“myDate”).getClass()时,我正在查找java.sql.TimeStamp,而在另一个设置中,它返回java.util.Date。我面临的问题是,当它返回日期对象时,它忽略了时间,只返回日期部分 我认为可以使用此连接属性控制此行为:
oracle.jdbc.mapDateToTimestamp
请参阅此论坛帖子,例如:
als info:java.sql.Timestamp是一个java.util.Date,它扩展了它 日期也有时间,虽然没有纳秒,但这是唯一的区别 可悲的是,这就是它的实现方式,但不是它应该的方式。从他们自己的文档中:
Timestamp
和java.util.Date
之间的继承关系实际上表示实现继承,而不是类型继承。
这意味着他们懒得写一些封装。这导致了许多怪癖,比如哈希代码在纳秒内不会改变,以及不对称的相等 数据库列是否相同,类型+长度定义?