我在我的Java代码中使用ODA(这很棒),但我在从字段中获取日期值时遇到问题。
如果我使用:
DateTime lastApprDt = doc.getItemValue("LastApproved", Date.class);
然后解析器对象并建议“将lastApprDt的类型更改为Date”
如果我将代码更改为:
Date lastApprDt = doc.getItemValue("LastApproved", Date.class);
然后解析器很高兴但是当我运行代码时出现错误:
[ODA :: WARNING]自动装箱请求了com.ibm.security.util.calendar.BaseCalendar $ Date,但是在LastApproved项目中为文档ID 992返回了org.openntf.domino.impl.DateTime
我糊涂了!如果doc.getItemValue(“LastApproved”,Date.class)返回Date类型,那么为什么我会收到错误?
确保lastApprDt Date的类型为java.util.Date
(而不是com.ibm.security.util.calendar.BaseCalendar.Date
类型)。
第一个是失败的,因为它试图将Date对象(getItemValue()
的输出)传递给DateTime对象(lastApprDate
)。
我不太确定为什么它选择将其作为com.ibm.security.util.calendar.BaseCalendar.Date
检索,我在ODA代码中看不到对该类的任何引用。值得检查代码中的import语句,以确保它不是选择com.ibm.security.util.calendar.BaseCalendar.Date
作为它认为你想要使用的相关Date类。我怀疑它可能已经完成了。如果是这样,请更改import语句以使用java.util.Date
。
自动装箱日期的代码查找特定的类以及如何转换它们。 java.util.Date
是它所期待的最明显的一个。我最近添加了java.sql.Date
,我相信最后的基础9.0.1和第一个FP8版本。 java.util.Calendar
是另一个支持的。像LocalDateTime这样的新Java 8 Date类可能看起来很合适,因为它们有更好的时区处理,但是将DateTime
时区转换为Java时区并且DateTime中的时区是只读的并不容易,所以它不适用于自动装箱此时此刻。
您不应该将完整的类名称作为第二个参数传递,我已经运行了只传递Date.class
的代码。这就是让我怀疑解析器建议已经猜到了你想要的错误类并导入com.ibm.security.util.calendar.BaseCalendar.Date
的原因。
如果您确定该字段包含日期值,则应该能够获取java.util.Date
Date lastApprDt = doc.getItemValue("LastApproved").get(0).toJavaDate();