项目练习时遇到的问题

问题1: Could not find a getter for

练习一个项目时,点击链接报错(抄录部分):

org.hibernate.PropertyNotFoundException: Could not find a getter for StationRun  in class cn.itcast.elec.domain.ElecCommonMsg
    at cn.itcast.elec.container.ServiceProviderCord.load(ServiceProviderCord.java:20)
    at cn.itcast.elec.container.ServiceProvider.<clinit>(ServiceProvider.java:10)
    at cn.itcast.elec.web.action.ElecCommonMsgAction.<init>(ElecCommonMsgAction.java:14)

看到文章:could not find a getter for ... in class ... 异常的原因解析

 

可能原因如下: 

1.真的没有写getter方法(发生几率:1%2.*.hmb.xml文件中的属性名和pojo不一致(*.hbm.xml和*.java没衔接好,不一致),字段属性没有正确配置,比如,*.hmb.xml中*.java的地址要明确(明确指出引用包的完整路径);映射错误;有多个主键时,对生成的联合主键配置错误;拼写错误(包括多空格)等(发生几率:48%3.方法写错/方法名写错,要按照javabean的书写规范写啊,要不然打死也找不到哪儿错了(发生几率:50%) 

这里提一下:get/set是不是不允许方法名中有连续两个大写字母,例如 

public String getODPType(){ 

        return this.oDPType; 

} 

public void setODPType(String      oDPType){ 

this.oDPType = oDPType; 

} 

这样写它就会报错,报找不到getter for oDPType的错误,但下面这样写就可以了 

public String odpType; 

public String getOdpType(){ 

        return this.odpType; 

} 

public void setOdpType(String      odpType){ 

this.odpType = odpType; 

} 

4.其他不明原因(发生几率:1%

最终修改ElecCommonMsg.hbm.xml后显示正常。

注意两点:1、表字段名首字母需要小写;  2、字段的顺序需要与domain中定义的一致。 3、明确指同的包的完整路径

 

问题2:类文件不更新

将生成的类文件删除后,重新发布后再次查看WEB-INF下并没有重新生成类文件。

操作:将所有类包重新导入一遍,再次发布运行就可以了。

 

问题3:Hibernate 中出现 XXXX is not mapped 问题

检查最终是由于HQL中的表名是与对应hibernate.cfg.xml中的表名大小写不一致所致。修改一致后就不报错了。

HQL语句中表名应该是ORM映射的类名

 

问题4:Field 'id' doesn't have a default value问题解决方法

原因:因为assigned是指主键是由人工分配的,而native则指主键值由库自动给出。

原来配置中设置的是native,而代码里也将ID值人工分配了,所以报错,最终修改配置文件中为assigned后保存成功。

 

posted @ 2016-06-29 14:37  milkty  阅读(339)  评论(0编辑  收藏  举报