日期:2014-05-18  浏览次数:20674 次

hibernate修改底层错误的问题,急求大神
是这样子的,原先有一个项目,在mysql中有一个student表

我想在先有的表上增加变量。增加了一个birthday的变量,varchar(40)
已经确定增加了这个变量

然后,我在student.java里面添加了:
private String birthday;
修改了构造函数和get set函数

然后在student.hbm.xml里面修改了:
<property name="birthday" type="java.lang.String">
            <column name="birthday" length="40" />
        </property>

但运行了之后,提示:
Unknown column 'student0_.birthday' in 'field list'
我检查了一下外键,这个birthday应该没有影响到外键,我就只是添加而已,还报了这样的错误:
警告: Failed to destroy MBean for naming resource [UserDatabase]
javax.management.InstanceNotFoundException: Users:type=UserDatabase,database=UserDatabase
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1094)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:415)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:403)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:506)
at org.apache.catalina.mbeans.MBeanUtils.destroyMBeanUserDatabase(MBeanUtils.java:1621)
at org.apache.catalina.mbeans.MBeanUtils.destroyMBean(MBeanUtils.java:1207)
at org.apache.catalina.deploy.NamingResources.destroyInternal(NamingResources.java:1073)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:304)
at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:825)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:304)
at org.apache.catalina.startup.Catalina.stop(Catalina.java:743)
at org.apache.catalina.startup.Catalina.start(Catalina.java:704)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)




我查了一下相关的资料,大概都是描述表映射出错,但名字我查了下没有错误,其余不知道又该怎么查,请问哪里出了问题了,感激不尽!

------解决方案--------------------
mysql中因为引号符号问题也会导致这种错误

unknown column xxx in 'field list'

先试着排除下数据库方面的问题吧,执行针对birthday列的插入或更新的sql语句

把问题集中在hibernate侧
------解决方案--------------------
把show_sql打开,直接把Hibernate生成的SQL打出来,把?换成对应的常量,直接执行。

这样100%会报同样的错误,但是在数据库端,你就知道错误在哪里了。
------解决方案--------------------
给分给分,