public enum Type
{
TEL,
FAX,
MOBILE;
}
@Embeddable
public class PhoneNumber implements Serializable
{
private static final long serialVersionUID = 1L;
@Basic(optional=false)
@Column(name="contact_id", insertable=false, updatable=false)
private Integer contactId;
@Enumerated(EnumType.STRING)
@Basic(optional=false)
@Column
private Type type = Type.MOBILE;
@Basic(optional=false)
@Column(name="country_dial_code")
private Integer countryDialCode;
@Basic(optional=false)
@Column(name="area_code")
private Integer areaCode;
@Basic(optional=false)
@Column(name="subscriber_nbr")
private Integer subscriberNbr;
...
}
@Entity
@Table(name="Contacts")
public abstract class Contact implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column
private Integer id;
@ElementCollection
@CollectionTable(name="PhoneNumbers", joinColumns={@JoinColumn(name="contact_id", referencedColumnName="id")})
@MapKey(name="type") @MapKeyEnumerated(EnumType.STRING)
private Map<Type, PhoneNumber> phoneNumbers;
...
}