我在Oracle DB中有一个Date字段。
日期字段1
现在有一个现有的DAO以Object
的形式获取此field1Object field1
现在我需要输入它到java Date
But if i do like following i get error:
Date dt = (Date) object; //object holds date object
DateTime jdt = new DateTime(dt) ; //convert it to jodaDate
错误:cannot cast Long to Date.
如何将其转换为javaDate而不是Joda DateTime
答案 0 :(得分:1)
您将Oracle DB中的数据类型DATE
与Java类型Date
混淆。错误cannot cast Long to Date
表明您持有的对象属于Java类型Long
,这就是为什么对Java Date
类型的强制转换失败的原因。 Long表示自1970年1月1日以来的秒数或毫秒数,具体取决于您的DOA层(参见其文档),因为Oracle中的DATE精度仅降至秒。要收到日期,请分别使用new Date((long) object)
或new Date(1000 * (long) object)
。
您也可以使用这些毫秒数直接生成DateTime
,而无需使用Java Date
类。
答案 1 :(得分:0)
从错误消息中可以看出,提取的对象是Long类型。现在,您可以简单地从Long对象构造 java.util.Date 对象,如下所示:
Date dt = new Date((Long)object)