Java 休眠连接表
我有两张桌子: 人Java 休眠连接表,java,oracle,hibernate,Java,Oracle,Hibernate,我有两张桌子: 人 ID | NAME | EMAIL_ID (foreign key of Email.ID) 电子邮件 我需要将数据拉回到以下实体中,但我不确定如何使用批注将PERSON.EMAIL\u ID加入EMAIL.ID @Entity @Table(name = "PERSON") public class PersonEntity { @Column(name = "ID") private String id; @Column(name = "NAM
ID | NAME | EMAIL_ID (foreign key of Email.ID)
电子邮件
我需要将数据拉回到以下实体中,但我不确定如何使用批注将PERSON.EMAIL\u 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\u ADDRESS
列?您的个人
实体应与EMAIL
实体连接,而不是直接与emailAddress属性连接
@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实体的电子邮件地址可以是@列(unique=true)
在Hibernate中通常不进行连接。而是使用映射和HQL。 这里可以找到一个很好的例子:
我同意这很奇怪,我们创建了联接表以备将来需要多封电子邮件时使用。在这种情况下,您应该更喜欢@OneToMany。
@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;
}
@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;
}