Java 使用自定义格式休眠日期列

Java 使用自定义格式休眠日期列,java,hibernate,date,Java,Hibernate,Date,我必须在hibernate pojo中映射一列。我遇到的问题是,我要使用的列是VARCHAR2(6个字符),但它是一个日期字符串,格式为mmYYYY。我想把它映射成一个约会 我查阅了各种资源,并尝试了许多方法 @Column(name = "EXP_DATE") @DateTimeFormat(pattern = "mmYYYY") @Temporal(TemporalType.DATE) private Date expiration; 然而,@DateTimeFormat注释似乎与我想要做

我必须在hibernate pojo中映射一列。我遇到的问题是,我要使用的列是
VARCHAR2(6个字符)
,但它是一个日期字符串,格式为
mmYYYY
。我想把它映射成一个约会

我查阅了各种资源,并尝试了许多方法

@Column(name = "EXP_DATE")
@DateTimeFormat(pattern = "mmYYYY")
@Temporal(TemporalType.DATE)
private Date expiration;
然而,
@DateTimeFormat
注释似乎与我想要做的事情并不相关。它没有读取我提供的格式,并在尝试将字符串解析为日期时抛出异常

java.lang.IllegalArgumentException
    at java.sql.Date.valueOf(Date.java:143)
更新: 我必须注意,我实际上无法修改任何XML配置,因此必须使用注释来完成。这不太理想,但这是我目前的状况

更新: 深入研究@DateTimeFormat注释,我的大写字母错误。我应该使用“MMyyyy”来进一步继续,格式化程序似乎不会接受任何不包括日期的格式。现在,我将把它映射到一个字符串,除非有人用有效的解决方案回复


感谢大家参与。

在这种模式中,您也在使用Spring?这一天是故意错过的。如果可能的话,我想隐式地把这个月的第一天定下来。就spring而言,我确实可以访问spring注释(由于我们正在从内部解决方案迁移到spring,这可能需要我进行一些连接)。好的,您想在数据库中保存日期的格式是什么?该列是一个6个字符的字符串,格式为“mmYYYY”(参见问题的第一段)。如果要另存为字符串,将字段限制为6个字符,并使用java中的管理日期和字符串,请不要使用hibernate TemporalType使其复杂化。在这种模式中,缺少一年中的另一个目的日期,您也在使用Spring?故意缺少这一天。如果可能的话,我想隐式地把这个月的第一天定下来。就spring而言,我确实可以访问spring注释(由于我们正在从内部解决方案迁移到spring,这可能需要我进行一些连接)。好的,您想在数据库中保存日期的格式是什么?该列是一个6个字符的字符串,格式为“mmYYYY”(参见问题的第一段)。如果希望另存为字符串,将字段限制为6个字符,并使用java中的管理日期和字符串,请不要使hibernate TemporalType复杂化。它还有另一个用途