Could not find a getter for xxx in class xxx

最近在学习Hibernate,在配置一对多,多对一的映射关系时遇到了:

    Caused by: org.hibernate.PropertyNotFoundException: Could not find a getter for employee in class com.learn.pojo2.Department
        at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:306)
        at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:299)
        at org.hibernate.mapping.Property.getGetter(Property.java:294)
        at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEntityTuplizer.java:300)
        at org.hibernate.tuple.entity.AbstractEntityTuplizer.(AbstractEntityTuplizer.java:141)
        at org.hibernate.tuple.entity.PojoEntityTuplizer.(PojoEntityTuplizer.java:78)

           ... 31 more


        查看代码之后找到了问题,在于配置与pojo类属性名字不一致,这个问题应该在使用代码智能提示的情况下更容易出现,下面是源代码:

public class Department {
	
	private Integer id ;
	private String name ;
        //如果是代码智能提示,在定义集合时,集合名会主动设置成复数形式
        private Set employees = new HashSet();
        
        //省略getter、setter

}

        再看Department.hbm.xml文件中对Set集合的配置

    
        
        
        	
        	
         

        这就出现问题了,也就是xml文件中的name属性值与类中属性名不一致,Hibernate在执行时会找与name属性值对应的getter 、setter 方法,显然是找不到的

        解决方法:在定义时两者名称相同,只要相同就可以,不需要与对应的类名相同

        


你可能感兴趣的:(JavaWeb开发,Hibernate)