日期:2014-05-16  浏览次数:20513 次

问题:通过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

?

?