@Converter不适用于JPA 2.4

时间:2016-09-15 16:39:03

标签: java mysql jpa-2.0 jodatime

我无法在JPA 2.4中使用@Converter工作。我已经按照herehere上的示例进行了操作。当我尝试持久化我的实体时,它失败并出现以下异常。有没有人成功地做到这一点?有什么我应该注意的吗?

  

导致:org.apache.openjpa.persistence.PersistenceException:数据截断:日期时间值不正确:'\ xAC \ xED \ x00 \ x05sr \ x00 \ x16org.joda.time.DateTime \ xB8

转换器类

@Converter
public class DateTimeConverter implements AttributeConverter<DateTime, Timestamp> {
    @Override
    public Timestamp convertToDatabaseColumn(DateTime dateTime) {
        return new Timestamp(dateTime.getMillis());
    }

    @Override
    public DateTime convertToEntityAttribute(Timestamp date) {
        return new DateTime(date);
    }
}

用法如

@Column(name = "created_on")
@Convert(converter = CustomConverter.class)
private DateTime createdOn;

1 个答案:

答案 0 :(得分:0)

这里有几个错误的东西:

  1. 您获得的异常表明该列中包含的当前值是序列化的org.joda.time.DateTime。

  2. 字段的类型应该是转换器的convertToEntityAttribute方法的返回类型,因此在您的情况下DateTime而不是Date