首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate 一对一 双向 主键联系关系

2012-10-27 
Hibernate一对一双向 主键关联StudentBasic.classpackage com.tian.test.entityimport java.io.Serializa

Hibernate 一对一 双向 主键关联
StudentBasic.class


package com.tian.test.entity;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.JoinColumn;
import javax.persistence.PrimaryKeyJoinColumn;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.OneToOne;

import javax.persistence.Table;

@Entity(name = "StudentBasic")
@Table(name = "studentBasick")
public class StudentBasic  {

//private static final long serialVersionUID = 691350277643811847L;

@Id
@GeneratedValue
@Column(name = "studentId")
private Integer studentId;

@Column(length = 10)
private String studentName;

@Column(length = 10)
private String sex;

@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private StudentDetail studentDetail;

public StudentBasic() {

}

public Integer getStudentId() {

return studentId;

}

public void setStudentId(Integer studentId) {

this.studentId = studentId;

}

public String getStudentName() {

return studentName;

}

public void setStudentName(String studentName) {

this.studentName = studentName;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public StudentDetail getStudentDetail() {

return studentDetail;

}

public void setStudentDetail(StudentDetail studentDetail) {

this.studentDetail = studentDetail;

}

}


StudentDetail.Class


package com.tian.test.entity;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.GenerationType;
import javax.persistence.JoinColumn;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.OneToOne;

import javax.persistence.PrimaryKeyJoinColumn;

import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

import org.hibernate.annotations.Parameter;

@Entity(name = "StudentDetail")
@Table(name = "studentDetailk")
public class StudentDetail  {

//private static final long serialVersionUID = 2038888147029653370L;

@Id
@GeneratedValue(generator = "pkGenerator")
@GenericGenerator(name = "pkGenerator",strategy = "foreign",parameters = { @Parameter(name = "property", value = "basic") })
//@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer studentId;

@Column(length = 50)
private String homeAddress;

@Column(length = 100)
private String homePhoneNumber;

@OneToOne(cascade = CascadeType.ALL,mappedBy="studentDetail")
//@PrimaryKeyJoinColumn

private StudentBasic basic;

public StudentDetail() {

}

public String getHomeAddress() {

return homeAddress;

}

public void setHomeAddress(String homeAddress) {

this.homeAddress = homeAddress;

}

public String getHomePhoneNumber() {

return homePhoneNumber;

}

public void setHomePhoneNumber(String homePhomeNumber) {

this.homePhoneNumber = homePhomeNumber;

}


public StudentBasic getBasic() {

return basic;

}

public void setBasic(StudentBasic basic) {

this.basic = basic;

}

public void setStudentId(Integer studentId) {
this.studentId = studentId;
}

public Integer getStudentId() {
return studentId;
}

}


Test.class

package com.tian.test.hibrenate;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.junit.Test;

import com.tian.test.entity.StudentBasic;
import com.tian.test.entity.StudentDetail;

public class testOToO {

public static SessionFactory sf;

static{
sf=new AnnotationConfiguration().configure().buildSessionFactory();
}
@Test
public void test(){
save();
//dede();
}
public void save() {
Session session = sf.openSession();

Transaction tx = session.beginTransaction();

try {

StudentBasic basic = new StudentBasic();

basic.setStudentName("mmmd");

basic.setSex("男");

StudentDetail detail = new StudentDetail();

detail.setHomeAddress("dsfs");

detail.setHomePhoneNumber("0756-5512425");

basic.setStudentDetail(detail);

detail.setBasic(basic);

//session.save(detail);
session.save(basic);

tx.commit();

} catch (Exception e) {

e.printStackTrace();

tx.rollback();

}

session.close();

}
//@Test
public void dede(){
Session session=sf.openSession();
Transaction tx = session.beginTransaction();
StudentBasic stuBas=(StudentBasic) session.get(StudentBasic.class, 4);
session.delete(stuBas);
//StudentDetail stuDel=new StudentDetail();
//stuDel=(StudentDetail) session.get(StudentDetail.class, 3);
//session.delete(stuDel);
session.delete(stuBas);
tx.commit();
}

public static  void  list() {

Session session = sf.openSession();

StudentDetail detail = (StudentDetail) session.createQuery(
"select b from StudentDetail b").iterate().next();

List list=session.createQuery("select b from StudentBasic b").list();

System.out.println(list.size());

session.close();

}
/*
public static void main(String[] args) {

list();

}
*/
}

热点排行