如何使用JPA和DB2将DATETIME列映射到Date对象

时间:2019-07-18 19:42:18

标签: java date jpa db2 spring-data

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

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

  

简短说明:DATETIME值的字符串表示形式为   日期时间值C无效

     

日期时间的字符串表示形式不在可接受的范围内   或格式不正确。日期时间值的正确范围   如下:表2. datetime值的范围Datetime数值   范围年0001至9999月1至12天4月,6月,9月,   11月(​​第4、6、9、11个月)1月30日至2月(第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参考》的第二章。   字符串数据格式。

首先,我将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);
}

我在Entity中的字段映射为

@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

有人可以帮助我吗?

谢谢

1 个答案:

答案 0 :(得分:0)

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

的文档

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

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