我在一个数据库中有一个表GameCycle,它包含一个类型号的列日期.此列中的值为8位数字,表示“20130301”的倒数日期.映射到这个表上,我有一个GameCycle类,其中包含
java.util.Date类型的受保护字段iDate.该字段使用自定义类型映射注释为“@Type(type =”reverseDate“)’.类Gamecycle被注释为’@TypeDef(name =“inverseDate”,typeClass = InverseDateType.class)’
import org.hibernate.annotations.Type; import org.hibernate.annotations.TypeDef; @Entity @TypeDef(name = "inverseDate",typeClass = InverseDateType.class) @Table(name = "GAMECYCLE") public class GameCycle implements Comparable<GameCycle>,Serializable { @Type(type = "inverseDate") @Column(name = "GC_DATE",nullable = false) protected Date iDate = null; ...
显然,导入绑定我使用hibernate作为一个jpa实现,所以我的问题是:
有没有办法摆脱hibernate注释,并使用纯javax.persistence解决方案进行相同的自定义类型映射?
解决方法
否JPA规范的当前版本不支持自定义类型映射.它是未来JPA 2.1最受欢迎的功能之一.
如果你真的想摆脱Hibernate特定的烦恼,你唯一可以做的就是将你的字段映射为String并手动执行必要的转换(在getters / setter中).
但在实践中,几乎每个基于JPA的大型应用程序都使用持久性提供程序的一些实现特定功能,因此我不认为在这种情况下避免依赖于Hibernate非常重要.