我的自定义类型是(没有默认构造函数!):
package com.XXX.common;
public class Email implements Serializable {
private String e;
public Email(String str) {
e = str;
}
}
我在Hibernate 3.5.6中的实体:
package com.XXX.persistence;
import com.XXX.common;
@Entity
@TypeDef(
name = "email",
defaultForType = Email.class,
typeClass = Email.class
)
public class User {
@Id private Integer id;
@Type(type = "email")
private Email email;
}
Hibernate说:
org.hibernate.MappingException: Could not determine type for:
com.XXX.common.Email, at table: user, for columns:
[org.hibernate.mapping.Column(email)]
我做错了什么?
答案 0 :(得分:5)
我的自定义类型是(没有默认构造函数!)(...)
自定义类型必须实现org.hibernate.usertype
中的一个界面(实施UserType
就足以满足您的具体示例),您的Email
类不自定义类型。换句话说,您需要创建一些EmailType
类,Hibernate将使用该类来保存类型为Email
的字段或属性。
PS:IMO在课程中包含String
没有多大价值,但让我们说这是一个例子。
答案 1 :(得分:4)
typeClass
必须指向扩展UserType
的内容(此处理程序类包含与数据库之间的映射)。