java.time YearMonth作为实体内的类型

时间:2016-11-27 03:25:49

标签: java jpa java-8 eclipselink java-time

如何在实体中使用YearMonth?我看过很多关于转换器的堆栈溢出答案?这仍然需要,如果是这样的话?

@Basic(optional = false)
@NotNull
@Column(name = "cc_exp_date")
private YearMonth ccExpDate;

我得到的例外情况如下。我可以将其转换为set方法中的日期,并在实体的get方法中转换回YearMonth作为解决方法吗?

 MysqlDataTruncation: Data truncation: Incorrect date value: '\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x06\x0C\x00\x00\x07\xE2\x02x' for column 'cc_exp_date' at row 1

1 个答案:

答案 0 :(得分:3)

如果您的JPA提供程序没有以合理的方式保留类型(在这种情况下,因为它是Java8类,它是在JPA 2.1批准之后添加的,并且因为您使用的EclipseLink没有'为了支持更新的类型,我们需要定义一个JPA 2.1 AttributeConverter来将其转换为标准的JPA可持久类型(在这种情况下类似java.sql.Date)。

其他JPA提供程序支持开箱即用这些类型(DataNucleus JPA肯定会这样做,而Hibernate也可能带有可选的依赖项?)