hibernate中關係映射的配置問題

部門和員工屬於一對多的關係app

員工的帳戶屬於一對一關係dom

帳戶和權限屬於多對多關係spa

department.hbm.xml.net

 1 <hibernate-mapping>
 2     <class name="com.demo.first.domain.Department" table="department">
 3         <id name="did" column="did">
 4             <generator class="native"/>
 5         </id>
 6         <property name="name" column="name"/>
 7         <property name="description" column="description"/>
 8         <set name="employeeSet" inverse="true" cascade="save-update">
 9             <!-- 外鍵的名稱(字段名):也就是說若是是一對多的關係,那麼會在多的一方生成的外鍵名稱是 column 中的值,
10                 這個值是能夠改變的,建議和對應的名稱一致 -->
11             <key column="wj_id"></key>
12             <one-to-many class="com.demo.first.domain.Employee"/>
13         </set>
14     </class>
15 </hibernate-mapping>

employee.hbm.xmlhibernate

 1 <hibernate-mapping>
 2     <class name="com.demo.first.domain.Employee" table="employee">
 3         <id name="eid" column="eid">
 4             <generator class="foreign"><!-- 直接將主鍵和外鍵進行關聯,主鍵同時做爲外鍵使用,在 hibernate 中 one-to-one 沒辦法在代碼中體現出新字段名,能夠使用many-to-one來生成一個字段,也能夠使用此方法來生成外鍵 -->
 5                 <param name="property">userAccount</param>
 6             </generator>
 7         </id>
 8         <property name="name" column="name" length="20"/>
 9         <property name="gender" column="gender"/>
10         <property name="birthday" column="birthday"/>
11         <property name="description" column="description"/>
12         <one-to-one name="userAccount" class="com.demo.first.domain.UserAccount" constrained="true" cascade="save-update"/>
13         <!-- 和 department 中配置 column 的名稱是同樣的,須要對應 -->
14         <many-to-one name="department" class="com.demo.first.domain.Department" column="wj_id"/>
15     </class>
16 </hibernate-mapping>

privilege.hbm.xmldebug

 1 <hibernate-mapping>
 2     <class name="com.demo.first.domain.Privilege" table="privilege">
 3         <id name="pid" column="pid">
 4             <generator class="native"/>
 5         </id>
 6         <property name="action"/>
 7         <set name="userAccountSet" table="userAccount_privilege">
 8             <!-- 和一對多同樣的操做,column 是在生成的字段名(外鍵),是能夠改變的,多對多的關係中,會生成一箇中間表,那麼在
 9                 column 中配置的參數就是生成的中間表中的字段名,另一方配置的字段名需相同-->
10             <key column="wj_pid"></key>
11             <many-to-many class="com.demo.first.domain.UserAccount" column="ua_wj_id"/>
12         </set>
13     </class>
14 </hibernate-mapping>

useraccount.hbm.xmlcode

 1 <hibernate-mapping>
 2     <class name="com.demo.first.domain.UserAccount" table="userAccount">
 3         <id name="uaid" column="uaid">
 4             <generator class="native"/>
 5         </id>
 6         <property name="loginName" column="loginName"/>
 7         <property name="password" column="password"/>
 8         <one-to-one name="employee" class="com.demo.first.domain.Employee"/>
 9         <set name="privilegeSet" table="userAccount_privilege">
10             <!-- 對應於另外一方的參數配置,column 的參數值和另外一方相同,也就是生成的中間表的字段名相同 -->
11             <key column="ua_wj_id"></key>
12             <many-to-many column="wj_pid" class="com.demo.first.domain.Privilege"/>
13         </set>
14     </class>
15 </hibernate-mapping>

另附上能夠打開 hibernate debug 模式(能夠查看全部的操做,包括自動建表語句等等):orm

須要的 jar 包等:xml

hibernate文件下載:https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.4.2.Final/hibernate-release-5.4.2.Final.zip/downloadblog

在 hibernate-release-5.4.2.Final\project\etc 中找到 log4j.properties 這個文件,直接放到 src 的根目錄下,便可:

重點就是上面的那個語句,去掉註釋(默認是打開的,沒有註釋)重啓便可,

 

 2019-04-25

相關文章
相關標籤/搜索