Что не так с моим пользовательским типом для JPA / Hibernate? - PullRequest
2 голосов
/ 30 сентября 2010

Мой пользовательский тип (конструктор по умолчанию!):

package com.XXX.common;
public class Email implements Serializable {
  private String e;
  public Email(String str) {
    e = str;
  }
}

Моя сущность в Hibernate 3.5.6:

package com.XXX.persistence;
import com.XXX.common;
@Entity
@TypeDef(
  name = "email",
  defaultForType = Email.class,
  typeClass = Email.class
)
public class User {
  @Id private Integer id;
  @Type(type = "email")
  private Email email;
}

Спящий говорит:

org.hibernate.MappingException: Could not determine type for:
com.XXX.common.Email, at table: user, for columns: 
[org.hibernate.mapping.Column(email)]

Что я делаю не так?

Ответы [ 2 ]

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

Мой пользовательский тип (конструктор по умолчанию!) (...)

Пользовательский тип должен реализовывать один из интерфейсов из org.hibernate.usertype (реализации UserType было бы достаточно для вашего конкретного примера), ваш Email класс НЕ пользовательский тип.Другими словами, вам нужно создать некоторый класс EmailType, который Hibernate будет использовать для сохранения поля или свойства типа Email.

PS: ИМО не имеет большого значения при переносе String с классом, но, скажем, это был пример.

Ссылки

Ресурсы

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

typeClass должен указывать на что-то, что расширяет UserType (этот класс обработчика содержит отображение из и в базу данных).

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