yegor256
yegor256

Reputation: 105053

How to use custom type in JPA column?

I have a class:

public class Email {
  private String 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.

Upvotes: 7

Views: 23043

Answers (2)

pakore
pakore

Reputation: 11497

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.

Upvotes: 0

Bozho
Bozho

Reputation: 597076

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)

Upvotes: 13

Related Questions