Hibernate中联合主键生成策略(二)

2015-01-27 22:37:38 · 作者: · 浏览: 33
unit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class TeacherTesting { public static SessionFactory sf = null; @BeforeClass public static void beforeClass(){ sf = new AnnotationConfiguration().configure().buildSessionFactory(); } @Test public void test() { TeacherPK pk = new TeacherPK(); pk.setId(1); pk.setName("t1"); Teacher t = new Teacher(); t.setPk(pk); // t.setName("t1"); t.setTitle("高级"); t.setAddress("北京"); t.setBirth(new Date()); t.setZhiCheng(ZhiCheng.A); Session session = sf.openSession(); session.beginTransaction(); session.save(t); session.getTransaction().commit(); session.close(); } @AfterClass public static void afterClass(){ sf.close(); } }

(3)查看结果

?

select * from teacher;

desc teacher;

?

?

方法二:在方法上添加@EmbeddedId

直接在Teacher.java中的getPK()方法上添加@EmbeddedId

小实验3:

(1)修改Teacher.java

package com.zgy.hibernate.model;



import java.util.Date;



import javax.annotation.Generated;

import javax.persistence.Column;

import javax.persistence.EmbeddedId;

import javax.persistence.Entity;

import javax.persistence.EnumType;

import javax.persistence.Enumerated;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.Table;

import javax.persistence.Temporal;

import javax.persistence.TemporalType;

import javax.persistence.Transient;



@Entity

@javax.persistence.TableGenerator(

name="Teacher_GEN",

table="GENERATOR_TABLE",

pkColumnName="pkkey",

valueColumnName="pkvalue",

pkColumnValue="Teacher",

allocationSize=1

)

public class Teacher {

// private int id;

// private String name;

private String title;

private String address;

private String wifeName;

private Date birth;

private ZhiCheng zhiCheng;

@Id

@GeneratedValue(strategy=GenerationType.TABLE,generator="Teacher_GEN")

// public int getId() {

// return id;

// }

// public void setId(int id) {

// this.id = id;

// }

// @Column(name="_name")

// public String getName() {

// return name;

// }

// public void setName(String name) {

// this.name = name;

// }

private TeacherPK pk;

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}



public String getWifeName() {

return wifeName;

}

public void setWifeName(String wifeName) {

this.wifeName = wifeName;

}

@Temporal(TemporalType.DATE)

public Date getBirth() {

return birth;

}

public void setBirth(Date birth) {

this.birth = birth;

}

@Enumerated(EnumType.STRING)

public ZhiCheng getZhiCheng() {

return zhiCheng;

}

public void setZhiCheng(ZhiCheng zhiCheng) {

this.zhiCheng = zhiCheng;

}

@EmbeddedId

public TeacherPK getPk() {

return pk;

}

public void setPk(TeacherPK pk) {

this.pk = pk;

}