我必须将我的类定义映射到现有数据库,其中日期字段存储为varchar.
例如
class A { @Column Date birth; }
如何对出生属性进行注释,以便将其正确映射到数据库varchar?
谢谢!
JPA 2.1中引入的属性转换器功能正是针对这种情况.如果您的JPA提供程序符合JPA 2.1规范(对于Hibernate,我相信这是版本> = 4.3),那么您可以处理如下:
class A { @Column @Convert(converter = DateOfBirthConverter.class) private Date dateOfBirth; }
转换器:
@Converter public class DateOfBirthConverter implements AttributeConverter { @Override public String convertToDatabaseColumn(Date dateOfBirth) { return new SimpleDateFormat("MM/dd/yyyy").format(dateOfBirth); } @Override public Date convertToEntityAttribute(String dateOfBirth) { try{ return new SimpleDateFormat("MM/dd/yyyy").parse(dateOfBirth); } catch(ParseException ex){ return null; } } }