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

相关推荐