Как использовать пользовательский тип в столбце JPA? - PullRequest
7 голосов
/ 30 сентября 2010

У меня есть класс:

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 ]

12 голосов
/ 30 сентября 2010

Ну, есть несколько способов:

  • аннотировать класс Email с помощью @Embeddable и иметь:

     @Embedded
     private Email email;
    
  • объявить пользовательский тип значения - см. здесь (используется @Type)

0 голосов
/ 30 сентября 2010

Вы можете сделать электронную почту сущностью, и она будет работать ... но это довольно неэффективно.

@Entity
public class Email {
  ...
}

Или вы можете выбрать значение от Email до String, и оно будет работать.(В любом случае, какой смысл оборачивать строку?)

Вы можете прочитать это руководство о пользовательских типах пользователей в Hibernate (так как вы пометили его).

Или вы можетеиспользуйте @Embebbed как говорит Божо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...