You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Ignite中TIMESTAMP与java.util.Date映射问题求助

Apache Ignite与Hibernate:TIMESTAMP到java.util.Date映射失败的解决方案

我正在负责一个已有10多年历史的产品重构项目,引入Apache Ignite提升系统可扩展性,同时项目依赖Hibernate自动生成的400多个Java实体类。当前遇到数据库侧java.sql.Types.TIMESTAMP类型到Java侧java.util.Date类型的映射问题,具体情况如下:

相关Ignite配置

<bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
    <constructor-arg>
        <util:constant static-field="java.sql.Types.TIMESTAMP"/>
    </constructor-arg>
    <constructor-arg value="create_date"/>
    <constructor-arg value="java.util.Date"/>
    <constructor-arg value="createDate"/>
</bean>

运行时异常

Failed to deserialize object [typeName=jp.xxxx.xxx.xxx.xxx.xxx.bean.PlayerXXXXBean]: 
class org.apache.ignite.binary.BinaryObjectException: Failed to read field [name=createDate]
...
Caused by: class org.apache.ignite.binary.BinaryObjectException: 
Unexpected field type [pos=49, expected=Date, actual=-2]

约束条件与需求

  • 无法修改Hibernate生成的实体类,不能将java.util.Date改为java.sql.Timestamp
  • 无法为400多个类逐个添加自定义marshaller
  • 已知Ignite官方不支持该直接映射,希望通过修改Ignite marshaller或其他全局方案从根本上解决映射问题
  • 数据库用TIMESTAMP而实体用Date会丢失毫秒数,该映射无法避免

目前我考虑的方向是为Hibernate生成的Bean创建对应Date的Timestamp包装setter和getter,通过这些方法更新私有Date成员,但不确定是否可行或有更优方案。恳请提供可行的解决方案建议。

内容的提问来源于stack exchange,提问作者Ryo-chan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 05:08:24