读书人

Hibernate 两种形式映射many to many

发布时间: 2012-10-09 10:21:45 作者: rapoo

Hibernate 两种方式映射many to many

<?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.hibernate.entity.User" table="user" catalog="hibernate"> <id name="userId" type="java.lang.Long"> <column name="USER_ID" precision="10" scale="0" /> <generator /> </id> <property name="name" type="java.lang.String"> <column name="NAME" not-null="true" /> </property> <!-- 共享主键方式映射 one to one 注意 class 要用完整类名--> <one-to-one name="relAddress" cascade="save-update"></one-to-one> <!-- 单独列外键通过many to one + unique 属性方式映射 one to one 注意 class 要用完整类名--> <many-to-one name="account" column="USER_ACCOUNT_ID" unique="true" cascade="save-update"></many-to-one> <!-- 通过中介表及中介类映射User 与 Item 的 many to many 关系 --> <set name="itemUser" cascade="save-update" inverse="true"> <key column="USER_ID"></key> <one-to-many name="code"><?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.hibernate.entity.Item" table="item" catalog="hibernate"> <id name="itemId" type="java.lang.Long"> <column name="ITEM_ID" precision="10" scale="0" /> <generator /> </id> <property name="itemName" type="java.lang.String"> <column name="ITEM_NAME" not-null="true" /> </property> <!-- one to many --> <bag name="bids" cascade="save-update" inverse="true"> <key column="ITEM_ID"></key> <one-to-many table="CATEGORY_ITEM" inverse="true" cascade="save-update"> <key column="ITEM_ID"></key> <many-to-many column="CATEGORY_ID"></many-to-many> </set> <!-- 使用中介表类实现 User 与 Item 的many to many 映射 --> <set name="itemUser" cascade="save-update" inverse="true"> <key column="ITEM_ID"></key> <one-to-many encoding="utf-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!--     Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping>    <class name="com.hibernate.entity.ItemUser" table="item_user" catalog="hibernate">        <id name="id" type="java.lang.Integer">            <column name="ID" />            <generator />        </id>        <many-to-one name="item" column="ITEM_ID" />        <many-to-one name="user" column="USER_ID" />    </class></hibernate-mapping>

?Item 与 User 使用了中介类ItemUser来映射many to many 关系

?

?

categary.hbm.xml

?

<?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"><!--     Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping>    <class name="com.hibernate.entity.Categary" table="categary" catalog="hibernate">        <id name="categoryId" type="java.lang.Long">            <column name="CATEGORY_ID" precision="10" scale="0" />            <generator />        </id>        <property name="categoryName" type="java.lang.String">            <column name="CATEGORY_NAME" />        </property>        <!-- 使用中介表而不使用中介实体类的Many to Many 映射 -->        <set name="items" table="CATEGORY_ITEM" cascade="save-update">        <key column="CATEGORY_ID"></key>        <many-to-many column="ITEM_ID"></many-to-many>        </set>    </class></hibernate-mapping>
?

?

Item 与 Categary 使用中介表,但不使用中介表的entity来映射many to many 关系

?

最后,代码工程文件作为附件上传


读书人网 >软件架构设计

热点推荐