我有兩個類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