其實單實體的一對多和多對一和2個實體的用法是一樣的,現在以user為例:
java代碼:
package com.test.bean;
import java.util.Set;
public class User
{
private Integer id;
private String firstname;
private String lastname;
private Integer parentID;
private int age;
private Set childrens;
private User user;
public Set getChildrens() {
return childrens;
}
public void setChildrens(Set childrens) {
this.childrens = childrens;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
this.id = id;
}
public String getFirstname()
{
return firstname;
}
public void setFirstname(String firstname)
{
this.firstname = firstname;
}
public String getLastname()
{
return lastname;
}
public void setLastname(String lastname)
{
this.lastname = lastname;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public Integer getParentID() {
return parentID;
}
public void setParentID(Integer parentID) {
this.parentID = parentID;
}
}
對應的hbm檔案:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.test.bean.User" table="users">
<id name="id" type="java.lang.Integer" column="id">
<generator class="increment"></generator>
</id>
<property name="firstname" type="string" column="firstname"
length="50">
</property>
<property name="lastname" type="string" column="lastname"
length="50">
</property>
<property name="age" type="java.lang.Integer" column="age"></property>
<set name="childrens" inverse="true"
lazy="false" where=" age=4">
<key>
<column name="parentID" />
</key>
<one-to-many class="com.test.bean.User" />
</set>
<many-to-one name="user" column="parentID" class="com.test.bean.User"></many-to-one>
</class>
</hibernate-mapping>