在项目中由于业务原因要对数据库中一个表做扩展,由于扩展的内容比较多,于是新建了一张表,表旧表做一对一关联,共享其旧表的主键。
贴出个小例子供自己备忘使用
我们这里用的是表名称:basic表和extend表
Basic.java 和Basic.hbm.xm如下
package com.sszd.hibernate;
public class Basic {
private int id;
private String feilda;
private Extend extend;
public Extend getExtend() {
return extend;
}
public void setExtend(Extend extend) {
this.extend = extend;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFeilda() {
return feilda;
}
public void setFeilda(String feilda) {
this.feilda = feilda;
}
}
<?xml version="1.0"?>
<!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.sszd.hibernate.Basic" table="basic">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="feilda" column="feilda" type="string"/>
<!-- cascade 表示级联关系,extend伴随着basic的操作面操作 -->
<one-to-one name="extend" class="com.sszd.hibernate.Extend" cascade="all"></one-to-one>
</class>
</hibernate-mapping>
Extend.java和Extend.hbm.xml
package com.sszd.hibernate;
public class Extend {
private int id;
private String feilda;
private Basic basic;
public Basic getBasic() {
return basic;
}
public void setBasic(Basic basic) {
this.basic = basic;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFeilda() {
return feilda;
}
public void setFeilda(String feilda) {
this.feilda = feilda;
}
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.sszd.hibernate">
<class name="com.sszd.hibernate.Extend" table="extend">
<id name="id" column="id">
<generator class="foreign">
<param name="property">basic</param>
</generator>
</id>
<property name="feilda" column="feilda"/>
<one-to-one name="basic" class="com.sszd.hibernate.Basic" constrained="true"></one-to-one>
</class>
</hibernate-mapping>