How to use custom type in JPA column?
I have a class:
public class Email {
private Str开发者_C百科ing name;
private String domain;
public String toString() {
return name + "@" + domain;
}
}
I want to use it in JPA column:
@Entity
public class User {
@Id private Integer id;
private Email email;
}
This is what Hibernate says:
org.hibernate.MappingException: Could not determine type for: com.XXX.Email
How to make it understand my custom type. I think that it's something very simple, but can't find in documentation.
Well, there are a number of ways:
annotate the
Email
class with@Embeddable
, and have:@Embedded private Email email;
declare a custom value type - see here (using
@Type
)
You can make email an entity and it will work...but it's pretty ineficcient.
@Entity
public class Email {
...
}
Or you can swtich from Email
to String
and it will work. (What's the point of wrapping a String anyway?)
You can read this tutorial about custom user types in Hibernate (since you tagged it).
Or you can use @Embebbed
as Bozho says.
精彩评论