【问题标题】:How Can I convert Date String as format yyyy-MM to Date with hibernate annoation如何使用休眠注释将日期字符串转换为格式 yyyyMM 到日期
【发布时间】:2015-10-15 10:48:30
【问题描述】:

当我尝试在属性顶部使用@DateTimeFormat(patter="yyyy-MM") 时,

错误:org.hibernate.engine.jdbc.spi.SqlExceptionHelper - 格式错误 日期“2015-05”

我可以做些什么来解决这个问题?

【问题讨论】:

  • 这是一个SQL异常,它不理解这种格式的日期,即缺少日期。
  • 数据库中的字符串日期都是格式为“yyyy-MM”,如(“2015-03”),如何将此字符串转换为日期休眠pojo
  • 您是否尝试过“模式”而不是“模式”?
  • 你的日期在sql数据库中保存为2015-03?您为此使用什么数据类型?
  • @Walter 你确定数据库中的列类型是日期吗?您使用的是哪个 DBMS?

标签: java hibernate date spring-annotations


【解决方案1】:

当我测试时,格式舔“yyyy-MMM”、“yyyy-MM-dd”都可以正常工作。 @DateTimeFormat 不支持“yyyy-MM”格式。然后,为了四处走动,我需要getter和setter中的attributeConverter或wave magic

【讨论】:

    【解决方案2】:

    也许你可以使用更合适的 Java 类型, 比如org.joda.time.YearMonth(Joda Time 2.0)或java.time.YearMonth(Java 8)。 例如,YearMonth.now() 给出“2015-09”。

    那么你需要一个从 String 到 YearMonth 的转换器。

    借助 Hibernate,您可以在实体上使用:

    @org.hibernate.annotations.Type(type = "MyConverter")
    private YearMonth yearMonth;
    

    使用 JPA 2.1:

    @javax.persistence.Convert(converter = MyConverter.class)
    private YearMonth yearMonth;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      相关资源
      最近更新 更多