有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在补充表中使用forein键的java无向一对一映射?

我有两个一对一关系的表,包括学生和地址表

Student
 student_id
 name

Address
  address_id
  student_id(foreign key to student_id  in student table)
  ...

以下是相关实体部分

 @Entity
@Table(name = "STUDENT")
public class Student {

    @Id
    @GeneratedValue
    @Column(name = "STUDENT_ID")
    private long id;

    @OneToOne
    private Address address;

}


@Entity
@Table(name = "ADDRESS")
public class Address {

    @Id
    @GeneratedValue
    @Column(name = "ADDRESS_ID")
    private long id;

    private long student_id;

}

我想将外键student_id(foreign key to id in student table)保留在地址表下,如顶部的表结构所示,但 希望将private Address address的无向关联保留在学生实体下。我不知道如何实现它

我尝试的是这个

@实体 @表(name=“STUDENT”) 公立班学生{

    @Id
    @GeneratedValue
    @Column(name = "STUDENT_ID")
    private long id;

    @OneToOne(mappedBy ="student_id")
    private Address address;

}


@Entity
@Table(name = "ADDRESS")
public class Address {

    @Id
    @GeneratedValue
    @Column(name = "ADDRESS_ID")
    private long id;

        @OneToOne
    @JoinColumn(name="student_id")
    private long student_id;

}

但它给出了以下例外

@OneToOne or @ManyToOne on Address.student_id references an unknown entity: int
    at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:107)
    at org.hibernate.cfg.Configuration.processEndOfQueue(Configuration.java:1580)
    at 

我一和他交往就行了

private Student student_id而不是private long student_id

所以,在某种程度上,Hibernate迫使我在辅助表(在本例中为地址表)中存在外键时使关联双向


共 (0) 个答案