天天看點

問題:通過hibernate連接配接資料庫,擷取資料庫中的資料

這個HRSystem是仿照書中的代碼編寫的,系統重建的過程可以視同于在此發表博文的時間順序

資料庫: mysql

前面調試了頁面的跳轉,問題解決後現在又出現了心的問題

背景:

1、通過頁面穿過來的使用者名及密碼,通過連接配接資料庫,在資料庫中查找是否存在此人資訊

2、在本系統中的設計中, employee 和 manager 使用同一張表(employee), 但是在java端,卻有兩個model:

     Employee 和 Manager, 其中Manager繼承Employee。 并且Manager.java和

Employee.java這兩個類中存在兩個相同的變量 employees 和 checkBacks.

問題:

1、執行程式時報錯如下:

org.hibernate.HibernateException: Found shared references to a collection: test.model.Manager.employees

2、錯誤原因:

因為在Manager和Employee定義了相同 的變量,并提供了相應的set方法,并且在Employee.hbm.xml映射檔案中也全部定義了employee這個普通屬性。是以在程式執行的過程中,就會報 Found shared references to a collection 這個錯誤

3、 解決方法:

去掉Manager或Employee中相同的變量即可,Employee.hbm.xml檔案中有重複定義的屬性,也要去掉(或注釋)

因為Manager繼承了Employee,  是以Employee中有的Manager中也會有,于是去掉了Manager中重複定義的employees和checkBacks