错误提示:
出错信息:<testcase classname="com.topdigi.persistence.CompanyDAOTest" name="testGetAllCompany" time="0.016"></testcase>
  <testcase classname="com.topdigi.persistence.CompanyDAOTest" name="testInsertCompany" time="0.312">
    <error type="java.lang.StackOverflowError">java.lang.StackOverflowError
at java.lang.Class.privateGetDeclaredFields(Class.java:1499)
at java.lang.Class.getDeclaredFields(Class.java:1090)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionAppend(HashCodeBuilder.java:345)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionHashCode(HashCodeBuilder.java:327)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionHashCode(HashCodeBuilder.java:194)
at com.topdigi.model.BaseObject.hashCode(BaseObject.java:34)
at java.util.AbstractSet.hashCode(AbstractSet.java:103)
at org.apache.commons.lang.builder.HashCodeBuilder.append(HashCodeBuilder.java:392)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionAppend(HashCodeBuilder.java:353)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionHashCode(HashCodeBuilder.java:327)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionHashCode(HashCodeBuilder.java:194)
at com.topdigi.model.BaseObject.hashCode(BaseObject.java:34)
at org.apache.commons.lang.builder.HashCodeBuilder.append(HashCodeBuilder.java:392)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionAppend(HashCodeBuilder.java:353)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionHashCode(HashCodeBuilder.java:327)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionHashCode(HashCodeBuilder.java:194)
at com.topdigi.model.BaseObject.hashCode(BaseObject.java:34)
at java.util.AbstractSet.hashCode(AbstractSet.java:103)
at org.apache.commons.lang.builder.HashCodeBuilder.append(HashCodeBuilder.java:392)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionAppend(HashCodeBuilder.java:353)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionHashCode(HashCodeBuilder.java:327)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionHashCode(HashCodeBuilder.java:194)
at com.topdigi.model.BaseObject.hashCode(BaseObject.java:34)
at org.apache.commons.lang.builder.HashCodeBuilder.append(HashCodeBuilder.java:392)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionAppend(HashCodeBuilder.java:353)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionHashCode(HashCodeBuilder.java:327)
at org.apache.commons.lang.builder.HashCodeBuilder.reflectionHashCode(HashCodeBuilder.java:194)
at com.topdigi.model.BaseObject.hashCode(BaseObject.java:34)
at java.util.AbstractSet.hashCode(AbstractSet.java:103)
.......(下面还有好多异常,都是和上面重复的提示)

解决方案 »

  1.   

    -------------------------------------------------------------
    按照以下配置,数据库一条记录也插入不进去,如果我将父类的.hbm.xml中关联部分的inverse="true"改为inverse="false",然后将测试代码中的(代码1)去掉,只保留(代码2):
    account.setCompany(company); //标识为(代码1)
    company.addAccount(account); //标识为(代码2)
    这样就能插入数据.
    但是我要用到inverse="true"的情况,应该怎样排除错误啊?是我的.hbm.xml配置错误嘛?
    错误提示请见一楼
    -------------------------------------------------------------
    请楼主将company.hbm.xml中的inverse="true"不要改变,这样配置是没有错误的,上面的代码1也不要去掉,如果要级联更新,父类必须给资料提供关联字段的字段值.在父类中添加一个table属性:
     <set
         name="accounts" 
            table="Res_Account"  //加上这一句        
            lazy="false"
            inverse="true"
            cascade="all"
            sort="unsorted"
        >我仔细看了一下楼主的程序,其他的配置没有问题,都正确.
      

  2.   

    上面的语言中出现笔误:"父类必须给资料提供关联字段的字段值'改为"父类必须给子类提供关联字段的字段值."我看了一下楼主的错误提示,提示不是hibernate出问题,好像是你的程序有错,错误如下:
    at com.topdigi.model.BaseObject.hashCode(BaseObject.java:34)
    at java.util.AbstractSet.hashCode(AbstractSet.java:103)从你的.hbm.xml文件中可以看出,"com.topdigi.model"是你的程序包名,那么"com.topdigi.model.BaseObject"就是你的程序了,错误就在这里,仔细检查一下你的BaseObject.java,或者将你的值对象先不要继承BaseObject.java,测试一下能不能通过,如果能通过,那么错误不在hibernate,而在你的BaseObject.java.楼主派错的时候,一定要沿着错误提示一步一步找下去,沉住心哦.
      

  3.   

    谢谢wxt1013(每晚抱着Java睡觉......) ,
    刚才按照你的说得,试了一下,通过了,谢谢你啦,帮了我一个大忙!