<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.jaeson.hibernatestudy.bean.Role" table="role" catalog="db4myeclipse">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native"></generator>
</id>
<property name="roleName" type="java.lang.String">
<column name="roleName" length="32" not-null="true" />
</property>
<property name="roleDesc" type="java.lang.String">
<column name="roleDesc" length="128" />
</property>
<!-- many2many双向关联 -->
<set name="users" inverse="true" table="user_role" catalog="db4myeclipse">
<key>
<column name="role_id" not-null="true" />
</key>
<many-to-many entity-name="com.jaeson.hibernatestudy.bean.User">
<column name="user_id" length="32" not-null="true" />
</many-to-many>
</set>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.jaeson.hibernatestudy.bean.IdCard" table="idcard" catalog="db4myeclipse">
<id name="id" type="java.lang.String">
<column name="id" length="32" />
<generator class="uuid"></generator>
</id>
<property name="cardNo" type="java.lang.String">
<column name="cardNo" length="32" not-null="true" />
</property>
<property name="authDate" type="java.sql.Timestamp">
<column name="authDate" length="19" not-null="true" />
</property>
<!-- one2one 默认是共享主键的加载方式,唯一外键关联必须在一端设置加载的连接属性,
连接属性指的是外键所在表的对应的类的属性,hibernate根据类属性对应的字段加载
连接类。IdCard根据主键id与关联表类User的idCard属性对应的列card_id进行加载
User对象。这里如果不设置property-ref属性,则加载User时,默认会使用
IdCard.id=User.id进行加载,这样就无法正确加载关联对象。
-->
<one-to-one name="user" class="com.jaeson.hibernatestudy.bean.User" property-ref="idCard"></one-to-one>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.jaeson.hibernatestudy.bean.User" table="user" catalog="db4myeclipse">
<id name="id" type="java.lang.String">
<column name="id" length="32" />
<generator class="uuid"></generator>
</id>
<property name="userName" type="java.lang.String">
<column name="userName" length="32" not-null="true" />
</property>
<!-- 组件映射 -->
<component name="address" class="com.jaeson.hibernatestudy.bean.Address">
<property name="address" type="java.lang.String">
<column name="address" length="128" />
</property>
<property name="zipCode" type="java.lang.Integer">
<column name="zipCode" />
</property>
<property name="phone" type="java.lang.String">
<column name="phone" length="32" />
</property>
</component>
<!-- one2one外键关联,通过unique="true"实现 -->
<many-to-one name="idCard" class="com.jaeson.hibernatestudy.bean.IdCard" cascade="all" fetch="select" unique="true">
<column name="card_id" length="32" />
</many-to-one>
<!-- many2one关联 -->
<many-to-one name="department" class="com.jaeson.hibernatestudy.bean.Department" fetch="select">
<column name="dept_id" length="32" />
</many-to-one>
<!-- many2many关联 -->
<set name="roles" table="user_role" catalog="db4myeclipse">
<key>
<column name="user_id" length="32" not-null="true" />
</key>
<many-to-many entity-name="com.jaeson.hibernatestudy.bean.Role">
<column name="role_id" not-null="true" />
</many-to-many>
</set>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.jaeson.hibernatestudy.bean.Department" table="department" catalog="db4myeclipse">
<id name="id" type="java.lang.String">
<column name="id" length="32" />
<generator class="assigned"></generator>
</id>
<property name="deptName" type="java.lang.String">
<column name="deptName" length="32" not-null="true" />
</property>
<!-- 设置fetch="join"在查询department时会使用inner join进行表连接查询,lazy失效 -->
<many-to-one name="parentDept" class="com.jaeson.hibernatestudy.bean.Department" fetch="join">
<column name="parent_id" length="32" />
</many-to-one>
<set name="users" inverse="true">
<key>
<column name="dept_id" length="32" />
</key>
<one-to-many class="com.jaeson.hibernatestudy.bean.User" />
</set>
<set name="childDepts" inverse="true">
<key>
<column name="parent_id" length="32" />
</key>
<one-to-many class="com.jaeson.hibernatestudy.bean.Department" />
</set>
</class>
</hibernate-mapping>