【问题标题】:How can I map a DATETIME column to Date object using JPA and DB2如何使用 JPA 和 DB2 将 DATETIME 列映射到 Date 对象
【发布时间】:2019-11-27 19:25:06
【问题描述】:

我正在尝试使用 Java 查询 DB2 数据库并将 DATEIME 列映射到 Date,但出现此错误:

DB2 SQL 错误:SQLCODE=-181,SQLSTATE=22007,SQLERRMC=null,DRIVER=4.21.29

简短说明:日期时间值的字符串表示形式是 不是有效的日期时间值 C

日期时间的字符串表示不在可接受的范围内 或格式不正确。日期时间值的正确范围 如下: 表 2. 日期时间值的范围 Datetime Numeric 范围 年 0001 到 9999 月 1 到 12 天 四月、六月、九月、 11 月(第 4、6、9、11 个月) 2 月 1 日至 30 日(第 2 个月) 1 至 28 日(闰年) 1 至 29 年)1 月、3 月、5 月、7 月、8 月、10 月、12 月 (第 1、3、5、7、8、10、12 个月) 1 到 31 小时 0 到 24 (如果小时为 24, 时间值的其他部分为零。如果小时是美国,最大小时是 12.) 分 0 到 59 秒 0 到 59 微秒 0 到 999999 系统操作:无法执行该语句。程序员回应:检查 该值是否在有效范围内并且在适当的范围内 格式。请参阅 DB2 SQL 参考的第 2 章以获取有关 字符串数据格式。

首先我将 LocalDate 转换为 Date

public static Date convertLocalDateToDate(LocalDate date) {
    return  Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());
}

第二个我在使用规范 API

public static Specification<MyEntity> dataUse(Date dataUse){
    return (root, query, builder) -> builder.equal(root.get("myDate"), dataUse);
}

我在实体中的字段是映射为

@Column(name="DT_EX_MOVI_IN")
@Temporal(TemporalType.DATE)
private Date myDate;

最后当我尝试执行查询时

repository.findAll(query);

我收到错误错误DB2 SQL Error: SQLCODE=-181, SQLSTATE=22007, SQLERRMC=null, DRIVER=4.21.29

有人可以帮助我吗?

谢谢

【问题讨论】:

  • 在我的数据库中,我想比较的日期被创建为日期
  • 你使用的是 java.sql.Date 类还是 java.util.Date ?为什么不直接将列映射到 LocalDate ?
  • 问题不在于我为我的 Object Java 获取 DB 数据时。问题是当我执行查询时。问题:我的 DB2 有一个作为 DATE 的 collum 映射,而不是 DATETIME。当我尝试使用 DATETIME 在我的 DB2 中使用列与 Object JAVA DATE 进行比较时,我可以返回数据,但是当我尝试在我的 DB2 中使用列执行我的 Object JAVA DATE 和 DATE 时,我收到错误 DB2 SQL 错误:SQLCODE= -181,SQLSTATE=22007,SQLERRMC=null,驱动程序=4.21.29。我已经尝试使用 DATE 类型的其他类型 Object Java 执行查询,例如 DATE、DateLocal、LocalDateTime,但我没有成功。

标签: java date jpa db2 spring-data


【解决方案1】:

我解决了我的问题。我阅读了 DB2 的文档https://www.ibm.com/support/knowledgecenter/en/SSEPEK_10.0.0/java/src/tpc/imjcc_rjvjdata.html

我的解决方案是使用 java.sql.Date 映射我的对象。

非常感谢所有尝试帮助我的人!

【讨论】:

  • 正因为如此我才问你是用java.sql.Date还是java.util.Date
  • 谢谢你@EduardoEljaiek,因为你的评论我去搜索如何将类型 DB2 映射到 Java,我找到了那个文档。非常感谢您的关注。
猜你喜欢
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 2021-06-07
  • 2013-03-01
  • 2012-05-28
  • 1970-01-01
  • 2018-01-18
相关资源
最近更新 更多