我有两个类Student
和Address
。休眠映射当外键放在参考类
Student{
stuid,
stuName,
}
Address{
street,
city,
stuid;//foriegn key Ref with Studnet
}
任何人都可以帮助我使用hibernate映射这两个类?
我有两个类Student
和Address
。休眠映射当外键放在参考类
Student{
stuid,
stuName,
}
Address{
street,
city,
stuid;//foriegn key Ref with Studnet
}
任何人都可以帮助我使用hibernate映射这两个类?
您应该首先了解什么是休眠模式下的OneToOne映射。 其次,如果我想要设计,那么我将address_id作为学生表中的外键,而不是学生ID。
因为你不使用@Table注释
Student类
@Entity
public class Student{
@Id
@Column("stuid")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column("stuName")
private String name;
//setters and getters
}
地址类
@Entity
public class Address{
@Id
@Column("add_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column("street")
private String street;
@Column("city")
private String city;
@OneToOne(cascade={CascadeType.SAVE,CascadeType.MERGE})
@JoinColumn(name="stuid")
private Student student
//setters and getters
}
假设其指定//表的名字将被视为学生如果一个Student
可以有多个Address
个实体,那么您需要在学生和地址类之间建立关系one-to-many
。学生应该知道他们属于哪个地址,并且因为您需要将学生ID保存在地址表中,则该关系变为双向。
的实体看起来是这样的:
Student.java
@Entity
@Table(name = "student_tbl") // Optional, By default table name is student, if you want to give different name then use this line.
public class Student1 {
@Id
@GeneratedValue
private int stuid;
private String stuName;
@OneToMany(mappedBy = "student")
private List<Address> address = new ArrayList<Address>();
// Setters & Getters
}
Address.java
@Entity
@Table(name = "address_tbl")
public class Address {
@Id
@GeneratedValue
private int addressId;
private String street;
private String city;
@ManyToOne
@JoinColumn(name="stuid")
private Student1 student;
// Setters & Getters
}
是的,你是正确的。但有些人已经设计了我的数据库。他们在地址表中设计了stuid。这是这里的主要问题 – stackUser44 2014-11-04 11:56:02
所以答案根据它们包含映射 – 2014-11-04 11:57:42