OneToMany和ManyToOne注释

时间:2012-03-16 05:53:36

标签: hibernate annotations

在ManyToOne映射中哪一列将作为外键:地址表中的哪一列用作Student表中的外键

public class Student {
    private String studentName;
    private Address studentAddress;

public Student(String studentName, Address studentAddress) {
        this.studentName = studentName;
        this.studentAddress = studentAddress;
    }
@ManyToOne(cascade = CascadeType.ALL)
    public Address getStudentAddress() {
        return this.studentAddress;
    }

,地址类是:

 public class Address {

    private long addressId;
        private String street;

            @Id
        @GeneratedValue
        @Column(name = "ADDRESS_ID")
        public long getAddressId() {
            return this.addressId;
        }
    @Column(name = "ADDRESS_STREET", nullable = false, length = 250)
        public String getStreet() {
            return this.street;
        }
    }
和ManyToOne一样,这是由@JoinColumn和@JoinColumn完成的

@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "STUDENT_PHONE", joinColumns = { @JoinColumn(name = "STUDENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "PHONE_ID") })
public Set<Phone> getStudentPhoneNumbers() {
return this.studentPhoneNumbers;
}

我是否遗漏了某些内容,或者这是正确的,我不理解相关内容

1 个答案:

答案 0 :(得分:0)

它没有指定JoinColumn或JoinTable,因为JPA规范定义了默认映射,以防这些注释不存在:

  

2.10.3.2单向ManyToOne关系

     

以下映射默认值适用:

     

实体A映射到名为A的表。

     

实体B映射到名为B的表。

     

表A包含表B的外键。外键列名   形成如下的串联:名称   关系财产或实体A的领域; &#34; _&#34 ;;的名字   表B中的主键列。

     

外键列与表的主键具有相同的类型   乙