1.Event.hbm.xml
<hibernate-mapping package="com.sing.hibernate.entity"> <class name="Event" table="E1_EVENT"> <!-- 标识属性声明 --> <id name="id" column="EVENT_ID"> <!-- 生成标识符策略 --> <generator class="sequence"> <!-- 对应oracle序列的名称 --> <param name="sequence">E1_EVENT_SEQ</param> </generator> </id> <property name="title" column="EVENT_TITLE" /> <property name="date" column="EVENT_DATE" /> <!-- inverse映射属性: 一个双向关联仅仅是在两端简单地正确设置引用。 然而hibernate并没有足够的信息去正确地执行insert和update语句(以避免违反约束), 所以它需要一些帮助来正确的处理双向关联。把关联的一端设置为inserse将告诉hibernate忽略关联的这一端, 把它看作是另一端的镜像。这就是所需的全部信息,hibernate利用这一信息来处理把一个有向导航模型转移到数据库 schema时的所有问题。所有的双向关联需要有一端被设置为inverse。在一对多关联中它必须代表多(many)的那端。 而在多对多关联中,你可以选任意一端,因为两端之间并没有差别。 --> <set name="persons" inverse="true"> <key column="EVENT_ID" /> <many-to-many column="PERSON_ID" class="Person" /> </set> </class> </hibernate-mapping>
2.Person.hbm.xml
<hibernate-mapping package="com.sing.hibernate.entity"> <class name="Person" table="E1_PERSON"> <id name="id" column="PERSON_ID"> <generator class="sequence"> <param name="sequence">E1_PERSON_SEQ</param> </generator> </id> <property name="age" column="PERSON_AGE" /> <property name="firstname" column="PERSON_FIRSTNAME" /> <property name="lastname" column="PERSON_LASTNAME" /> <!-- 表里面的第一行代表从person到event的一个关联, 表名由set的table属性决定, 关联里面的标识字符, 对于person这一端由key的column决定, 而event那端则由many-to-many的column决定 --> <set name="events" table="PERSON_EVENT"> <key column="PERSON_ID" /> <many-to-many column="EVENT_ID" class="Event" /> </set> <!-- 对应的邮箱地址 element的column定义为实际保存邮箱的列名值 --> <set name="emails" table="PERSON_EMAIL"> <key column="PERSON_ID" /> <element type="string" column="EMAIL_ADDRESS" /> </set> </class> </hibernate-mapping>
------------------------------------------------------------------------------------------------------------------------------------------------
1.用户映射信息
<!-- 一个用户对应多个权限 一个权限供多个用户使用 --> <hibernate-mapping package="com.sing.hibernate.entity"> <class name="User1" table="s_user1"> <id name="id" column="u_id"> <generator class="sequence"> <param name="sequence">u_user1_seq</param> </generator> </id> <property name="name" column="u_name" /> <!-- table为第三方表的名称 --> <set name="roles" table="s_user1_role"> <!-- hibernate会把u_id加入到s_user1_role中,并且以外键的形式引用当前类的主键 --> <key column="u_id" not-null="true" /> <!-- hibernate会把r_id加入到s_user1_role中,并且以外键的开工引用Role类中的主键 --> <many-to-many class="Role" column="r_id"/> </set> </class> </hibernate-mapping>
2.权限映射信息
<hibernate-mapping package="com.sing.hibernate.entity"> <class name="Role" table="s_role"> <id name="id" column="r_id"> <generator class="sequence"> <param name="sequence">r_role_seq</param> </generator> </id> <property name="name" column="r_name" /> <!-- 同User.hbm.xml --> <set name="user1s" table="s_user1_role" inverse="true"> <key column="r_id" /> <many-to-many class="User1" column="u_id" /> </set> </class> </hibernate-mapping>