Hibernate联合主键关联(Annotation配置)
2013-03-06 00:00
387 查看
![](http://static.oschina.net/uploads/img/201303/06102556_9wx9.jpg)
package edu.xaut.hibernate;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.OneToOne;
@Entity
public class Student {
private int id;
private String name;
private String gender;
private StuIdCard stuIdCard;
private int age;
@Id
@GeneratedValue
public int getId() {
return id;
}
@Column(name = "name", length = 20)
public String getName() {
return name;
}
@Column(name = "gender", length = 6)
public String getGender() {
return gender;
}
@OneToOne
@JoinColumns( {
@JoinColumn(name = "StuIdCardId", referencedColumnName = "id"),
@JoinColumn(name = "StuIdCardNum", referencedColumnName = "num") })
public StuIdCard getStuIdCard() {
return stuIdCard;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setGender(String gender) {
this.gender = gender;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setStuIdCard(StuIdCard stuIdCard) {
this.stuIdCard = stuIdCard;
}
}
package edu.xaut.hibernate;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.OneToOne;
@Entity
@IdClass(StuIdCardPk.class)
public class StuIdCard {
private int id;
private String num;
private String color;
private Student student;
@Column(length = 10)
public String getColor() {
return color;
}
@Id
public int getId() {
return id;
}
@Id
@Column(length = 20)
public String getNum() {
return num;
}
@OneToOne(mappedBy = "stuIdCard")
public Student getStudent() {
return student;
}
public void setColor(String color) {
this.color = color;
}
public void setId(int id) {
this.id = id;
}
public void setNum(String num) {
this.num = num;
}
public void setStudent(Student student) {
this.student = student;
}
}
package edu.xaut.hibernate;
import java.io.Serializable;
import javax.persistence.Column;
public class StuIdCardPk implements Serializable {
private int id;
private String num;
public int getId() {
return id;
}
@Column(length = 20)
public String getNum() {
return num;
}
public void setId(int id) {
this.id = id;
}
public void setNum(String num) {
this.num = num;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof StuIdCardPk) {
StuIdCardPk stuIdCard = (StuIdCardPk) obj;
if (this.id == stuIdCard.id && this.num.equals(stuIdCard.num))
return true;
}
return false;
}
@Override
public int hashCode() {
return this.num.hashCode();
}
}
生成的SQL语句如下:
create table StuIdCard (
id integer not null,
num varchar(20) not null,
color varchar(10),
primary key (id, num)
)
create table Student (
id integer not null auto_increment,
age integer not null,
gender varchar(6),
name varchar(20),
StuIdCardId integer,
StuIdCardNum varchar(20),
primary key (id)
)
alter table Student
add index FKF3371A1BDF1F5376 (StuIdCardId, StuIdCardNum),
add constraint FKF3371A1BDF1F5376
foreign key (StuIdCardId, StuIdCardNum)
references StuIdCard (id, num)
相关文章推荐
- 【hibernate框架】如何配置联合主键-XML与Annotation样例剖析
- hibernate一对一单向外键关联_Annotation_联合主键
- Hibernate xml配置方法之联合主键
- hibernate关联非主键注解配置
- hibernate--联合主键--annotation
- Hibernate 使用Annotation之联合主键
- hibernate 联合主键生成机制(组合主键XML配置方式)
- Hibernate联合主键在实体类中的配置
- hibernate 联合主键生成机制(组合主键XML配置方式)
- Hibernate 联合主键的配置方法实例
- hibernate联合主键注解配置
- Hibernate联合主键怎样在xml中配置
- hibernate中配置非主键关联(单向一对多)
- hibernate一对一单向主键关联_Annotation
- Hibernate复合主键作为外键在关联映射中的配置方法
- hibernate中联合主键总结_annotation
- Hibernate-Annotation常用的注解归总&&ID的生成策略&&联合主键
- JPA/hibernate @joincolumns 联合主键关联
- Hibernate多对多双向关联(Annotation配置)