Hibernate 对Joda DateTime的JPA映射支持
有没有像hibernate@Type那样的javax持久性注释Hibernate 对Joda DateTime的JPA映射支持,hibernate,jpa,orm,entity,persistence,Hibernate,Jpa,Orm,Entity,Persistence,有没有像hibernate@Type那样的javax持久性注释 @LastModifiedDate @Column(name = "LAST_MODIFIED_DATE") @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime") private DateTime lastModifiedDate = DateTime.now(); 或者是否有其他方法可以摆脱hibernate@Type注释。仅仅删除它就会从
@LastModifiedDate
@Column(name = "LAST_MODIFIED_DATE")
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime lastModifiedDate = DateTime.now();
或者是否有其他方法可以摆脱hibernate@Type注释。仅仅删除它就会从数据库中抛出二进制过长异常。是的,您可以。只需在
persistence.xml
中设置以下JPA属性:
<property name="jadira.usertype.autoRegisterUserTypes" value="true"/>
在JPA2中,解决方案是使用自定义JPA转换器,将jodatime值转换为Java.sql.Date值。下面是一篇关于映射新的Java 8日期时间类型的gret博客文章,这些类型基本上是Java 8库中标准化的jodatime类型:
对于JPA1,不支持现成的转换器,您可以使用特定于JPA实现的转换器(例如hibernate)或者使用PostLoad和Preupdate侦听器将jodatime字段临时化并将其编码/解码到另一个日期字段您永远无法完全摆脱特定于Hibernate的状态,因为jodatime不在JPA规范中。。。是的,您可以指定持久性属性,但它们是Hibernate持久性属性,因此无法与其他Provider一起使用。JPA 2(Java EE 7)可以使用自定义转换器。这似乎是errm、jpa2.1实际上是AttributeConverterGood答案的重复,但请注意,这不是标准的JPA属性,可能只有hibernate支持