自身關聯注意的問題:
1、關聯多的一方必須是隻有一個父類節點,如果存在多個父類節點,那麼就不能采用自身關聯,(字段備援資料太多)
2、自身關聯可以節省表的設計、
3、一的一端為父節點,沒有外鍵
4、多的一端為子節點,并且存在外鍵
5、關聯一對多自身關聯外鍵key、mary-to-one、指向同一個對象同時也是同一外鍵字段
代碼配置:
1、建立表
create table t_user(
u_id varchar(255),
u_name varchar(255),
u_age integer,
u_price double(5,2),
uc_id varchar(255),//外鍵
primary key(u_id)
);
2、java-pojo類
public class usert implements serializable{
private string id;
public string name;
private integer age;
private double price;
//父類
private usert usertsup;
//子類
private set<usert> userchild = new hashset<usert>();
public usert(){}
省略get、set方法
}
3、配置檔案
<?xml version="1.0"?>
<!doctype hibernate-mapping public
"-//hibernate/hibernate mapping dtd 3.0//en"
<hibernate-mapping package="com.wolf.pojo.onetoone" auto-import="false">
<class name="usert" table="t_user">
<!-- 多對一:隻有單項 -->
<id name="id" column="u_id">
</id>
<property name="name" column="u_name"/>
<property name="age" column="u_age"/>
<property name="price" column="u_price"/>
<many-to-one name="usertsup" class="usert" column="uc_id" lazy="false" cascade="all"></many-to-one>
<set name="userchild" table="t_user" cascade="all" >
<key column="uc_id"></key>
<one-to-many class="usert"/>
</set>
</class>
</hibernate-mapping>