<?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>
<?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>