Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠连接表_Java_Oracle_Hibernate - Fatal编程技术网

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;
}