如何在JPA列中使用自定义类型?

时间:2010-09-30 07:36:46

标签: java hibernate jpa

我有一个班级:

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

如何让它了解我的自定义类型。我认为这很简单,但在文档中找不到。

2 个答案:

答案 0 :(得分:12)

嗯,有很多方法:

  • 使用Email@Embeddable课程注释,并且:

     @Embedded
     private Email email;
    
  • 声明自定义值类型 - 请参阅here(使用@Type

答案 1 :(得分:0)

你可以将电子邮件变成一个实体,它会起作用......但它非常无效。

@Entity
public class Email {
  ...
}

或者你可以从Email切换到String,它会起作用。 (无论如何包装一个字符串有什么意义?)

您可以在Hibernate中阅读有关自定义用户类型的this tutorial(因为您已对其进行了标记)。

或者你可以像Bozho所说的那样使用@Embebbed