org.hibernate.MappingException: Could not find a getter ...

来源:互联网 发布:javascript廖雪峰pdf 编辑:程序博客网 时间:2024/05/22 13:33

Team.java 部分代码:

public class Team {  private Long id;  private String name;  private Set monkeys=new HashSet();    // 省略id,name的get与set代码    public Set getMonkeys(){    return monkeys;  }  public void setMonkeys(Set monkeys){    this.monkeys=monkeys;  }}

Team.hbm.xml 部分代码:

<hibernate-mapping>  <class name="com.qiuclass.persistent.Team" table="TEAMS">    <id name="id" type="long" column="ID">      <generator class="increment" />    </id>        <property name="name" type="string" column="NAME" />        <set name="MONKEYS" inverse="true" lazy="true">      <key column="TEAM_ID" />      <one-to-many class="com.qiuclass.persistent.Monkey"/>    </set>      </class></hibernate-mapping>

当代码在编译到Configuration conf=new Configuration().configure("hibernate.cfg.xml")时,就报如下的错误:
org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
  ...
Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]>
  ...
Caused by: java.lang.reflect.InvocationTargetException>
   ...
Caused by: org.hibernate.PropertyNotFoundException: Could not find a getter for MONKEYS in class com.qiuclass.persistent.Team 
  ...

在最后的提示Could not find a getter for MONKEYS in class com.qiuclass.persistent.Team,错误是Team类里找不到MONKEYS的getter方法,在反复检查后才知道映射文件Team.hbm.xml里<set name="MONKEYS" ... >的MONKEYS与类文件Team.java里的名字不符,应该改为monkeys,这样在编译的时候才能找到getMonkeys方法。

当初还以为name="MONKEYS"是指数据库里表名字,概念没搞清楚,导致耗费了时间。

以此记录,避免再出现这错误。

0 0