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 关系
?
最后,代码工程文件作为附件上传