Hibernate:在项目范围内定义类型映射

时间:2012-01-17 21:48:20

标签: java hibernate

我正在使用Hibernate& Joda Time,得到UserType库的支持。

我可以使用以下方法保留日期:

@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
@Column
private DateTime startDate;

但是,我想知道是否可以在某处定义此映射,而不是在DateTime类型的每个实例上定义。

从Hibernate 3.4迁移时,必须从JodaTime Hibernate换出到UserType - > 4.0,我不愿意在整个域模型中散布类型声明。

2 个答案:

答案 0 :(得分:3)

使用Usertype的3.0.0.CR1版本,您可以利用以下类型的自动注册:

PersistentBigMoneyAmount
PersistentMoneyAmount
PersistentCurrency
PersistentCurrencyUnit
PersistentDateTime
PersistentDurationAsString
PersistentInstantAsTimestamp
PersistentLocalDate
PersistentLocalTime
PersistentMonthDayAsString
PersistentPeriodAsString
PersistentTimeOfDay
PersistentYearMonthDay
PersistentYears

要启用此功能,您需要将JPA或Hibernate属性'jadira.usertype.autoRegisterUserTypes'设置为'true'。

升级usertype.joda时,Maven工件现在称为“usertype.core”。

更多信息请访问http://blog.jadira.co.uk/blog/2012/1/19/release-jadira-usertype-300cr1-with-support-for-joda-money-0.html

答案 1 :(得分:0)

您可以实施BasicType,并在构建SessionFactory时注册它。 hibernate参考手册在section 6.4.1中解释了这一点。