刚刚和八千哥弄一个问题,这个很诡异的问题,困扰了我这么长时间。哎,说来惭愧。
用三大框架写毕设,结果今天获取前台数的时候,发现传值有个传不到。
我一开始用的是名为cows的数据,后来换了个数据库,加了一些字段,库名取为mycows。
问题从此开始了,cows中有一段从1到16的数据,在mycows中是从1到18。但是程序无论如何都是取到的从1到16的,经过测试发现,问题在用hibernate取值的话,就会是从cows数据库取值。用jdbc写,则是正确的mycows中取值。
我们用了各种方式,查配置文件,查路径,甚至重启数据库,弄了半天,好吧,要放弃了。
最后的一下,看了一下实体类。因为是注解生成的实体类,八千哥一下看到了问题所在。
/** * TRole entity. @author MyEclipse Persistence Tools */ @SuppressWarnings("serial") @Entity @Table(name = "t_role", catalog = "cows") public class TRole implements java.io.Serializable { // Fields private Integer roleId;
catalog="cows"!!!
哎,这个里面指定了数据库。。。。
因为用的是myeclipse反向生成的,当初数据库是cows,而现在修改为mycows,所以才出现总是查询到cows里面的数据。
个人觉得,框架的这个设计有点问题。既然在hibernate的配置xml里面指定了数据库,这个实体类里面还可以运用不同的catalog,并且不报错,这个问题实在是有点让人头疼的。
问题已解决,小问题实在折腾人啊。分享出来,希望大家不要重蹈覆辙。