tyl*_*ler 12 java hibernate jpa
我GameCycle在db中有一个表,其中包含一个date类型的列number.此列中的值是8位数字,表示反日期,如' 20130301'.映射到此表上我有一个类GameCycle,其中包含受保护的字段iDate类型java.util.Date.该字段@Type(type = "inverseDate")使用自定义类型映射进行注释.该课程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;
...
Run Code Online (Sandbox Code Playgroud)
显然,导入将我绑定到使用hibernate作为jpa实现,所以我的问题是:
有没有办法摆脱hibernate注释并使用纯javax.persistence解决方案进行相同的自定义类型映射?
Gui*_*sta 36
最终在JPA 2.1(JSR-388,Java EE 7的一部分)中添加了自定义类型映射.不再需要
Hibernate的@Type注释,可以用JPA 2.1中的Type Conversion替换.
JPA 2.1增加了:
最基本的例子:( 示例1:转换基本属性) - 来自源
@Converter
public class BooleanToIntegerConverter
implements AttributeConverter<Boolean, Integer>
{ ... }
Run Code Online (Sandbox Code Playgroud)
...
@Entity
@Table(name = "EMPLOYEE")
public class Employee
{
@Id
private Long id;
@Column
@Convert(converter = BooleanToIntegerConverter.class)
private boolean fullTime;
}
Run Code Online (Sandbox Code Playgroud)
其他链接:
当前版本的JPA规范不支持自定义类型映射.这是未来JPA 2.1最受欢迎的功能之一.
如果你真的想要摆脱特定于Hibernate的annoations,你唯一能做的就是将你的字段映射为String并手动执行必要的转换(在getter/setter中).
但实际上几乎每个基于JPA的大型应用程序都使用持久性提供程序的一些特定于实现的特性,因此我认为在这种情况下避免依赖Hibernate并不重要.
| 归档时间: |
|
| 查看次数: |
9654 次 |
| 最近记录: |