Hibernate 学习之 多对多关联
Hibernate的关联关系看上去非常的头疼,不静下心来好好理理还是搞不清楚他到底什么什么玩意的。
背景:用户和权限(Function)之间的关系是多对多的关系,即一个一个用户可以有多个Function,而一个function也可以被多个用户所有。
问题:如何是用Hibernate来方便的维护二者之间的关系?
表建立:
FUNCTION表用来存储所有的function:
CREATE TABLE "MYTRX"."FUNCTION"(ID NUMBER NOT NULL,FUNC_NAME varchar2(20) NOT NULL, CONSTRAINT FUNCTION_PK primary key (ID));
CREATE TABLE "MYTRX"."USER_INFO"(ID NUMBER NOT NULL,USER_NAME varchar2(20) NOT NULL, CONSTRAINT USER_INFO_PK primary key (ID));
CREATE TABLE "MYTRX"."USER_FUNCTION"(USER_ID NUMBER NOT NULL,//这里应该是外键FUNC_ID NUMBER NOT NULL,//这里应该是外键 CONSTRAINT USER_FUNCTION_PK primary key (USER_ID, FUNC_ID))
<?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.mmif.ORM.MMIFAdmin" table="USER_INFO" catalog="MYTRX"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator > <param name="sequence">S_USER_INFO_ID</param> </generator> </id> <property name="userName" type="java.lang.String"> <column name="USER_NAME" length="20" /> </property> <set name="function" table="USER_FUNCTION" lazy="false" cascade="all"> <key column="USER_ID" not-null="true"/> <many-to-many column="FUNC_ID" 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.mmif.ORM.MMIFFunction" table="FUNCTION" catalog="MYTRX"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator > <param name="sequence">S_FUNCTION_ID</param> </generator> </id> <property name="funcName" type="java.lang.String"> <column name="FUNC_NAME" length="20" /> </property> <set name="user" inverse="true" lazy="false" table="USER_FUNCTION"> <key column="FUNC_ID"/> <many-to-many column="USER_ID" class="com.mmif.ORM.MMIFAdmin"/> </set> </class></hibernate-mapping>