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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值