相信很多学习hibernate的初学者都会出现过table doesn't exists问题,最开始我也碰到过这种问题,不过解决的方法很蠢就是去mysql里面重新建表,因为毕竟先建表的思想也不能说是错误的是吧。
但是就算是有先建表的约束但是后面再插入值的时候还是会报错,但是也有可能不会再报错,这个就要视具体情况而定了。不过为什么要先建表呢?我在hibernate.cfg.xml中已经配置了<property name="hibernate.hbm2ddl.auto">create</property>这一属性,我认为通常情况下都会是你的主键设置错误,我这里用的是比较落后的做法,使用xxx.hbm.xml配置JavaBean。今天我也碰到了同样的问题,为什么我指定的只是一个简单的一对多多对一的问题(Dept,Employee),然后在hbm.xml中配置好了,但是对应Employee PO类的表能够成功在数据库中创建就是我的dept表一直说不存在,后来在我仔细检查的时候发现Dept类中定义的逐渐是String类型,然后在定义xml配置文件却使用了native主键生成策略。很明显主键就配置错误了。
所以,再碰到这样的问题,其实不用Google、Baidu,自己好好耐心的看看是不是哪里出了小问题一直没发现,要相信自己的直觉,hibernate肯定不会无缘无故报错。
当然,如果你一直发现找不出来,可以把问题发给我,如果我能解决肯定会以最快的速度帮你解决,因为你的问题可能也是我的问题,这样大家就能够互相进步。