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.<init>(AbstractEntityTuplizer.java:141)
        at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:78)

           ... 31 more


        查看代碼之後找到了問題,在於配置與pojo類屬性名字不一致,這個問題應該在使用代碼智能提示的情況下更容易出現,下面是源代碼:

public class Department {
	
	private Integer id ;
	private String name ;
        //如果是代碼智能提示,在定義集合時,集合名會主動設置成複數形式
        private Set<Employee> employees = new HashSet<Employee>();
        
        //省略getter、setter

}

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

    
        <!-- 這裏在是手動配置時會設置成與對應類名相同的名稱 -->
        <set name="employee"  inverse="false">
        	<key column="departmentId"></key>
        	<one-to-many class="com.learn.pojo2.Employee"/>
         </set>

        這就出現問題了,也就是xml文件中的name屬性值與類中屬性名不一致,Hibernate在執行時會找與name屬性值對應的getter 、setter 方法,顯然是找不到的

        解決方法:在定義時兩者名稱相同,只要相同就可以,不需要與對應的類名相同

        


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章