开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜