Student.hbm.xml的配置:

<hibernate-mapping package="org.hibernate.first.model">


<class name="Student">

<composite-id name="pk" class="org.hibernate.first.model.StudentPK">  

<key-property name="id"></key-property>   <!--主键属性-->

<key-property name="name"></key-property>   <!--主键属性-->

</composite-id>


        <property name="age" column="age"/>   <!--剩余的其他属性-->

   </class>


</hibernate-mapping>


主键类的编写:

public class StudentPK implements Serializable{

private int id;

private String name;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public boolean equals(Object o){

if (o instanceof StudentPK) {

StudentPK pk = (StudentPK)o;

if (this.id == pk.getId() && this.name.equals(pk.getName())) {

return true;

}

}

return false;

}

@Override

public int hashCode(){

return this.name.hashCode();

}

}


model类的编写:

public class Student {

private int age;

private StudentPK pk;

public StudentPK getPk() {

return pk;

}

public void setPk(StudentPK pk) {

this.pk = pk;

}


public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}


测试类的编写:

public class TestStudent {

static Configuration cfg = null;

static SessionFactory sessionFactory = null;

@Before

public void before(){

System.out.println("this is before");

}

@BeforeClass

public static void beforeClass(){

cfg = new AnnotationConfiguration();

sessionFactory = cfg.configure().buildSessionFactory();

}

@Test

public void testStudent(){

Student s = new Student();

StudentPK pk = new StudentPK();

pk.setId(1);

pk.setName("jim");

s.setPk(pk);

//s.setName("jim");

s.setAge(20);

Session session = sessionFactory.openSession();

session.beginTransaction();

session.save(s);

session.getTransaction().commit();

session.close();

}

@After

public void after(){

System.out.println("this is After.");

}

@AfterClass

static public void afterClass(){

sessionFactory.close();

}

}