如何在JPA(eclipselink)中使用joda时间?

Aha*_*med 14 java persistence jpa jodatime eclipselink

我试着DataTimeentity班上使用.@Temporal(TemporalType.DATE)在字段上方添加,我得到错误说"Temporal类型的持久字段或属性必须是java.util.Date,java.util.Calendar或java.util.GregorianCalendar类型".我可以来回介绍转换; 使用setter和getter如下:

@Temporal(TemporalType.DATE)
private Calendar attendanceDate;

public DateTime getAttendanceDate() {
    return new DateTime(this.attendanceDate);
}

public void setAttendanceDate(DateTime attendanceDate) {
    this.attendanceDate = attendanceDate.toCalendar(Locale.getDefault());
}
Run Code Online (Sandbox Code Playgroud)

但我希望eclipselink能为我做到这一点.我已经通过Hibernate去了' 坚持Joda-time的DateTime ' .答案建议使用hibernate,但我必须使用eclipselink.我可以DateTime在我的实体类中使用DB表示的对象BLOB,但我需要它Date.有什么相似的jodatime-eclipselink吗?还是其他任何建议?谢谢您的帮助.

Jam*_*mes 15

基本链接定义了一个EclipseLink转换器,用于从Joda DateTime转换为java.sql.Timestamp或Date.您可以使用它,或者定义自己的转换器并通过EclipseLink中的@Convert,@ Confverter使用它.

对于DDL创建,转换器应定义initialize方法并将映射字段上的类型设置为java.sql.Timestamp.

请在EclipseLink中记录一个错误(或对现有错误进行投票),我们应该支持Joda.

  • @kaciula我通过添加它来实现它的工作:`mapping.getField().setType(java.sql.Timestamp.class);`.HTH. (5认同)

Hug*_*nte 6

我尝试使用joda-time-eclipselink-integration,但是不行,可能我做错了,

所以我做了更多的研究,我找到了这个链接http://jcodehelp.blogspot.com.br/2011/12/persist-joda-datetime-with-eclipselink.html,他们使用@Converter注释来转换Joda日期时间.

我希望,我试着为我工作,也适合你.