在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;
}
我是否遗漏了某些内容,或者这是正确的,我不理解相关内容
答案 0 :(得分:0)
它没有指定JoinColumn或JoinTable,因为JPA规范定义了默认映射,以防这些注释不存在:
2.10.3.2单向ManyToOne关系
以下映射默认值适用:
实体A映射到名为A的表。
实体B映射到名为B的表。
表A包含表B的外键。外键列名 形成如下的串联:名称 关系财产或实体A的领域; &#34; _&#34 ;;的名字 表B中的主键列。
外键列与表的主键具有相同的类型 乙