我有一个班级:
public class Email {
private String name;
private String domain;
public String toString() {
return name + "@" + domain;
}
}
我想在JPA专栏中使用它:
@Entity
public class User {
@Id private Integer id;
private Email email;
}
这就是Hibernate所说的:
org.hibernate.MappingException: Could not determine type for: com.XXX.Email
如何让它了解我的自定义类型。我认为这很简单,但在文档中找不到。
答案 0 :(得分:12)
嗯,有很多方法:
使用Email
为@Embeddable
课程注释,并且:
@Embedded
private Email email;
声明自定义值类型 - 请参阅here(使用@Type
)
答案 1 :(得分:0)
你可以将电子邮件变成一个实体,它会起作用......但它非常无效。
@Entity
public class Email {
...
}
或者你可以从Email
切换到String
,它会起作用。 (无论如何包装一个字符串有什么意义?)
您可以在Hibernate中阅读有关自定义用户类型的this tutorial(因为您已对其进行了标记)。
或者你可以像Bozho所说的那样使用@Embebbed
。