启动服务器的时候遇到的org.hibernate.PropertyNotFoundException: field [set] not found on xx.xxx.xx问题

以下是我公司新招来的菜鸟写了一段神代码后报的错,我调试了很长时间也查阅了很多资料,终于在下午的时候调试明白了,以此为例提醒其他的程序猿们写代码要认真啊!2B错误犯了都没地方goole去啊!!

启动tomcat时报错代码如下:

严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in URL [file:/D:/apache-tomcat-6.0.33/apache-tomcat-6.0.33/webapps/hospital/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.PropertyNotFoundException: field [set] not found on com.zhaokanqi.bean.Registration
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1403)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:545)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:272)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:196)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.hibernate.PropertyNotFoundException: field [set] not found on com.zhaokanqi.bean.Registration
at org.hibernate.property.DirectPropertyAccessor.getField(DirectPropertyAccessor.java:145)
at org.hibernate.property.DirectPropertyAccessor.getField(DirectPropertyAccessor.java:137)
at org.hibernate.property.DirectPropertyAccessor.getGetter(DirectPropertyAccessor.java:160)
at org.hibernate.util.ReflectHelper.getter(ReflectHelper.java:241)
at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:229)
at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:302)
at org.hibernate.cfg.HbmBinder.createProperty(HbmBinder.java:2193)
at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2170)
at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2060)
at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:381)
at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:295)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:166)
at org.hibernate.cfg.Configuration.add(Configuration.java:716)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:551)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:677)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1400)
... 36 more
2013-9-29 15:32:14 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2013-9-29 15:32:14 org.apache.catalina.core.StandardContext start
严重: Context [/hospital] startup failed due to previous errors
2013-9-29 15:32:14 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
2013-9-29 15:32:15 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2013-9-29 15:32:15 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2013-9-29 15:32:15 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/32  config=null
2013-9-29 15:32:15 org.apache.catalina.startup.Catalina start

信息: Server startup in 5321 ms


问题所在:

这位菜鸟非常固执一定要先创建好pojo类以及类里面的getset等方法都写好了以后然后正向工程创建数据库的方式去写项目,ok,就算他么经验这么做不符合开发项目的实际情况,但是按照他本人的思路往下捋顺是没有问题的,但是等他写好一堆东西后就报错了。还骗我说昨天没报错就今天报错了,我扯个脖子在那调试吧:

第一步:是不是创建的pojo类有问题,是不是他自己手写的get set方法,我查看了一下没有问题;

继续第二步骤:是不是他的application.xml文中对于正向工程创建数据库的配置文件写错了,我盯着屏幕看了半天也没错。如下:


发现没错,我又查找了相关方面的知识,百思不得其解啊,最终最终高潮来了 我灵机一动去看看hbm文件,同学们错误找到了:

<class name="com.zhaokanqi.bean.Registration" table="Registration">
<id name="patientId" column="patientId" >
<generator class="native"></generator>
</id>

<property name="name" column="name"/>
<property name="set" column="sex"/>
<property name="cost" column="cost"/>
<property name="age" column="age"/>
<property name="outpatientsGenre" column="outpatientsGenre"/>
<property name="outpatientsNumber" column="outpatientsNumber"/>
<property name="outpatientsOffices" column="outpatientsOffices"/>
<property name="doctorName" column="doctorName"/>
<property name="outpatientsDoctor" column="outpatientsDoctor"/>
<property name="registrationPersonnel" column="registrationPersonnel"/>
<property name="registrationCost" column="registrationCost"/>
<property name="lookCost" column="lookCost"/>
</class>

尼玛,写映射文件的时候一个类型都没设置,人家数据库知道你定义的是毛线类型啊,将应该加的type=“xxx”全部都加上,服务器再也不报错了。


但是回头思考这个问题,如果再看到类似于: org.hibernate.PropertyNotFoundException: field [set] not found on xx。xxx。xx的exception的时候,要理解字面意思filed的含义就是域,在java代码里就是pojo类在数据库里就是字段,人家找不到,找不到不是java代码里面没有这个东西就是数据库没有(如果是java代码的话报错的内容能具体些,能具体到哪些没有找到),所以啊 调错的时候还是要根据控制台反馈的信息去思考不然瞎调乱调很浪费时间的说!



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bai-1013

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值