---------------------------------一對多-------------------------------------------------
Id Name password
Id Subname tid
Test.java
private int id;
private String name;
private String password;
private Set<Subtest> subtestes=new HashSet<Subtest>();
subtest.java
private int id;
private String subname;
private Test test;
Test.hbm.xml
<class name="Test" table="TEST">
<id name="id" type="java.lang.Integer">
<generator class="assigned"></generator>
</id>
<property name="name" type="java.lang.String"></property>
<property name="password" type="java.lang.String"></property>
<set name="subtestes" table="Subtest" inverse="true" cascade="all">
<key column="id"></key>
<one-to-many class="Subtest"/>
</set>
</class>
Subtest.hbm.xml
<class name="com.epng.Subtest" table="SUBTEST" >
<id name="id" type="java.lang.Integer">
<generator class="assigned"></generator>
</id>
<property name="subname" type="java.lang.String"></property>
<many-to-one name="test" class="Test">
<column name="tid" ></column>
</many-to-one>
</class>
Test test =new Test();
Set<Subtest> sb=new HashSet<Subtest>();
test.setId(new Integer(12));
test.setName("epng");
test.setPassword("epng123");
Subtest subtest=new Subtest();
subtest.setId(new Integer(1));
subtest.setSubname("epng222");
subtest.setTest(test);
Subtest subtest1=new Subtest();
subtest1.setId(new Integer(2));
subtest1.setSubname("epng333");
subtest1.setTest(test);
test.getSubtestes().add(subtest);
test.getSubtestes().add(subtest1);
Session sess= HibernateUtil.currentSession();
Transaction ts=sess.beginTransaction();
sess.save(test);
ts.commit();
sess.close();
-------------------------------------基于外鍵一對一------------------------------------------------
author_id person_id
person_id name
Author.java
private String authorId;
private Person person;
Person.java
private String personId;
private String name;
private Author author;
Author.hbm.xml
<class name="com.epng.Author" table="AUTHOR">
<id name="authorId" column="author_id" type="java.lang.String">
<generator class="assigned"></generator>
</id>
<many-to-one name="person" cascade="all"
class="com.epng.Person" unique="true" column="person_id"/>
</class>
Person.hbm.xml
<class name="com.epng.Person" table="PERSON">
<id name="personId" column="person_id">
<generator class="assigned"/>
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="20" />
</property>
<one-to-one name="author" class="com.epng.Author" property-ref="person"></one-to-one>
</class>
Session sess= HibernateUtil.currentSession();
Transaction ts=sess.beginTransaction();
Author a=new Author();
Person p=new Person();
p.setPersonId("1");
p.setName("tangqing");
a.setAuthorId("11");
a.setPerson(p);
sess.save(p);
sess.save(a);
ts.commit();
sess.close();
-------------------------------------基于主鍵一對一------------------------------------------------
author_id person_id
person_id name author_id
Author.java
private String authorId;
private String personId;
private Person person;
Person.java
private String personId;
private String authorId;
private String name;
private Author author;
Author.hbm.xml
<class name="com.epng.Author" table="AUTHOR">
<id name="authorId" column="author_id" type="java.lang.String">
<generator class="assigned"></generator>
</id>
<property name="personId" column="person_id" type="java.lang.String"/>
<one-to-one name="person" cascade="all" class="com.epng.Person" />
</class>
Person.hbm.xml
<class name="com.epng.Person" table="PERSON">
<id name="authorId" column="author_id">
<generator class="foreign">
<param name="property">author</param>
</generator>
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="20" />
</property>
<property name="personId" type="java.lang.String">
<column name="person_id" length="20" />
</property>
<one-to-one name="author" class="com.epng.Author" constrained="true"></one-to-one>
</class>
Session sess= HibernateUtil.currentSession();
Transaction ts=sess.beginTransaction();
Author a=new Author();
a.setAuthorId("11");
a.setPersonId("bbb");
Person p=new Person();
p.setPersonId("1");
p.setName("tangqing");
p.setAuthor(a);
a.setPerson(p);
sess.save(p);
sess.save(a);
ts.commit();
sess.close();