组合PK    <?xml version="1.0" encoding='GBK'?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
" http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd "><hibernate-mapping><class name="com.us.po.login.LoginRole" table="loginrole">
<composite-id name="LoginRolePK" class="com.us.po.login.LoginRolePK" >
<key-property name="userId" column="USER_ID" type="String" />
<key-property name="funId" column="FUN_ID" type="String"/>
</composite-id>
</class>
</hibernate-mapping>

解决方案 »

  1.   

    复写的hashcode和equals方法public int hashCode() {
    int result;
    result = ( userId != null ? userId.hashCode() : 0 );
    result = 29 * result + ( funId != null ? funId.hashCode() : 0 );
    return result;
    }
    public boolean equals( Object obj ) {
    if ( this == obj ) {
    return true;
    }
    if ( ! ( obj instanceof LoginRolePK ) ) {
    return false;
    }
    LoginRolePK lRole = ( LoginRolePK ) obj;
    if ( userId != null ? !userId.equals( lRole.userId ) : lRole.userId != null ) {
    return false;
    }
    if ( funId != null ? !funId.equals( lRole.funId ) :
    lRole.funId != null ) {
    return false;
    }
    return true;
    }
      

  2.   

    是不是有两个相同的LoginRole.hbm.xml在classpath中。
      

  3.   

    Caused by: net.sf.hibernate.MappingException: duplicate import: LoginRole
    应该是这个原因吧??
      

  4.   

    双重导入把你的equals方法去掉
      

  5.   


    Caused by: net.sf.hibernate.MappingException: Error reading resource: com/us/po/login/LoginRole.hbm.xmlCaused by: net.sf.hibernate.MappingException: duplicate import: LoginRole
    先查一下这两个原因,第一条可能是你的文件路径不对,所以会那样报错。第二个就是楼上所讲的,可能重复导入包了。
      

  6.   

    to:sgdb(神天月晓)
    去掉equals方法没用,还是报同样的异常
    怎样查看是否加载了两次?谢谢to:drugon(想换工作,准备跳槽................................) 
    我把
    Configuration conf = new Configuration().configure();改成只加载
    Configuration conf = new Configuration().addClass( LoginRole.class );
    则报异常

    net.sf.hibernate.MappingException: Error reading resource: com/us/po/login/LoginRole.hbm.xml at net.sf.hibernate.cfg.Configuration.addClass(Configuration.java:336) at com.us.util.HibernateUtil.getSession(HibernateUtil.java:22) at com.us.dao.common.DAOContext.getSession(DAOContext.java:42) at com.us.dao.common.DAOImplBase.getSession(DAOImplBase.java:34) at com.us.dao.common.DAOImplBase.save(DAOImplBase.java:73) at com.us.logic.hibernatetest.main(hibernatetest.java:37)Caused by: net.sf.hibernate.PropertyNotFoundException: field not found: LoginRolePK at net.sf.hibernate.property.DirectPropertyAccessor.getField(DirectPropertyAccessor.java:74) at net.sf.hibernate.property.DirectPropertyAccessor.getField(DirectPropertyAccessor.java:80) at net.sf.hibernate.property.DirectPropertyAccessor.getGetter(DirectPropertyAccessor.java:88) at net.sf.hibernate.util.ReflectHelper.getter(ReflectHelper.java:65) at net.sf.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:74) at net.sf.hibernate.cfg.Binder.bindRootClass(Binder.java:285) at net.sf.hibernate.cfg.Binder.bindRoot(Binder.java:1229) at net.sf.hibernate.cfg.Configuration.add(Configuration.java:249) at net.sf.hibernate.cfg.Configuration.addInputStream(Configuration.java:285) at net.sf.hibernate.cfg.Configuration.addClass(Configuration.java:333) ... 5 morecom.us.util.DataAccessException: net.sf.hibernate.MappingException: Error reading resource: com/us/po/login/LoginRole.hbm.xml at com.us.dao.common.DAOImplBase.save(DAOImplBase.java:81) at com.us.logic.hibernatetest.main(hibernatetest.java:37)Caused by: net.sf.hibernate.MappingException: Error reading resource: com/us/po/login/LoginRole.hbm.xml at net.sf.hibernate.cfg.Configuration.addClass(Configuration.java:336) at com.us.util.HibernateUtil.getSession(HibernateUtil.java:22) at com.us.dao.common.DAOContext.getSession(DAOContext.java:42) at com.us.dao.common.DAOImplBase.getSession(DAOImplBase.java:34) at com.us.dao.common.DAOImplBase.save(DAOImplBase.java:73) ... 1 moreCaused by: net.sf.hibernate.PropertyNotFoundException: field not found: LoginRolePK at net.sf.hibernate.property.DirectPropertyAccessor.getField(DirectPropertyAccessor.java:74) at net.sf.hibernate.property.DirectPropertyAccessor.getField(DirectPropertyAccessor.java:80) at net.sf.hibernate.property.DirectPropertyAccessor.getGetter(DirectPropertyAccessor.java:88) at net.sf.hibernate.util.ReflectHelper.getter(ReflectHelper.java:65) at net.sf.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:74) at net.sf.hibernate.cfg.Binder.bindRootClass(Binder.java:285) at net.sf.hibernate.cfg.Binder.bindRoot(Binder.java:1229) at net.sf.hibernate.cfg.Configuration.add(Configuration.java:249) at net.sf.hibernate.cfg.Configuration.addInputStream(Configuration.java:285) at net.sf.hibernate.cfg.Configuration.addClass(Configuration.java:333) ... 5 moreException in thread "main"
      

  7.   

    说明是没找到主键loginRolePK类
    但我放在同一个包下的,路径应该是对的啊  晕
    可看配置文件
      

  8.   

    哦,是联合主键,equals还是要的<composite-id name="LoginRolePK" class="com.us.po.login.LoginRolePK" >
    是不是你的实例名和类名一致产生了问题??换个name看看在多说一句,hb不建议使用联合主键,用这个东西很麻烦。
      

  9.   

    to:sgdb(神天月晓) ( ) 呵呵   谢谢   竟然犯这种错误晕