2016-01-07 2 views
0

У меня есть две таблицы:Hibernate Регистрация Таблицы

Person

ID | NAME | EMAIL_ID (foreign key of Email.ID) 

Email

ID | EMAIL_ADDRESS 

мне нужно вытащить обратно данные в следующий Entity, но я не уверен, как присоединиться к PERSON.EMAIL_ID с использованием EMAIL.ID с аннотациями

@Entity 
@Table(name = "PERSON") 
public class PersonEntity { 
    @Column(name = "ID") 
    private String id; 

    @Column(name = "NAME") 
    private String name; 

    // How do I do a one to one join here? 
    private String emailAddress; 
} 

Как правильно использовать аннотации, чтобы поле emailAddress отображалось на столбец EMAIL.EMAIL_ADDRESS?

ответ

2

Ваш объект Person должен присоединиться к объекту Email, а не непосредственно по электронной почте.

@Entity 
@Table(name = "PERSON") 
public class PersonEntity { 
    @Column(name = "ID") 
    private String id; 

    @Column(name = "NAME") 
    private String name; 

    @OneToOne(fetch = FetchType.LAZY, mappedBy = "person", cascade = CascadeType.ALL) 
    private Email email; 
} 

Но странно иметь объект только для писем. Вы только гарантируете, что электронная почта уникальна? В этом случае у лица Person может быть адрес электронной почты с @Column(unique = true).

@Entity 
@Table(name = "PERSON") 
public class PersonEntity { 
    @Column(name = "ID") 
    private String id; 

    @Column(name = "NAME") 
    private String name; 

    @Column(unique = true) 
    private String emailAddress; 
} 
+0

Я согласен, что это странно, мы создали таблицу присоединиться к будущему доказательство его в случае, когда нужно несколько писем – Edd

+0

В этом случае следует отдавать предпочтение @OneToMany. – Quentin