我编写了一个自定义用户类型来处理值为NULL时的日期,并在我的pojo中用作
@Entity
@Table(name="Person"
)
public class Person {
private int id;
@Column(name="dob", length=10)
@Type(type="poc.datetype.DateTimeUserType")
private Date dob;
//... getters and setters
}
当尝试在DB中持久化Person时,自定义类型DateTimeUserType未调用。
但是如果我将自定义用户类型注册到休眠配置,那么它就可以正常工作。
DateTimeUserType dateTimeUserType = new DateTimeUserType();
configuration.registerTypeOverride(dateTimeUserType,new String[] { dateTimeUserType.returnedClass().getName() });
我经历了许多使用自定义用户类型的例子,但没有人注册到hibernate配置。 我的问题是,是否必须将自定义用户类型注册到配置,否则它应该无需注册?
使用4.3.5.Final
的Hibernate版本答案 0 :(得分:0)
每当你在pojo类中使用usertypes / CustomTypes时,你必须将userTypes / CustomType注册到hibernate配置。它可以通过两种方式完成,可以在方言中注册自定义类型,也可以注册到hibernate配置。 以下是使用UserType并将用户类型注册到配置的方法。
POJO班级:
$scope.needLogin = true;
$scope.focusLogin = function() {
// avoid 'form invalid' state when browser auto-complete form fields
$('#LoginView_Username').trigger('input');
$('#LoginView_Password').trigger('input');
if (!$scope.loginForm.$invalid) {
// commonService.info('ok, click on login button');
$scope.needLogin = false;
}
if (!$scope.needLogin) {
return;
}
setTimeout($scope.focusLogin, 1000);
};
UserType注册:
@TypeDefs({
@TypeDef(
name = "DateTime",
defaultForType = org.joda.time.LocalDateTime.class,
typeClass = com.common.data.type.WMPersistentLocalDateTime.class
)
})
@Entity
@Table(name="TABLE1"
,schema="tr11"
)
public class Table1 implements java.io.Serializable
{
@Type(type="DateTime")
private LocalDateTime column3;
...getters & setters ....
}
答案 1 :(得分:0)
请参阅我的以下帖子,UserType api menthods are not called from Criteria Builder query in hibernate 我在那里的答案,它是一个hinerate的错误
它已在5.2.0.Final版本
中修复