一张表a 
其中两个字段 
bsrcid 
bobjid 一张表b 
(不是很重要的我省略了) a表中的字段是在分析了b表后得出的结果,算法大致如下:b中字段两两比较,把符合结果的数据存到a表中,所以bsrcid,bobjid都是来自于b表,所以我把a表的bsrcid,bobjid都设成了外键,同时hibernate中我是这样定义的 
<many-to-one name="obj" column="objid" class="b" not-null="true" fetch="join"/> 
<many-to-one name="src" column="srcid" class="b" not-null="true" fetch="join"/> 
(假设我的表名和类同名) 请问这样对么?可我运行时报错啊:org.hibernate.hql.ast.QuerySyntaxException: a is not mapped [select count(*) from a where bsrcid=7 or bobjid=7] 

解决方案 »

  1.   

    这重hibernate还真是从来没见过,
    <many-to-one name="obj" column="objid" class="b" not-null="true" fetch="join"/> 
    <many-to-one name="src" column="srcid" class="b" not-null="true" fetch="join"/> 
    这是哪个配置文件里的?
      

  2.   

    <many-to-one name="obj" column="objid" class="b" not-null="true" fetch="join"/> 
    <many-to-one name="src" column="srcid" class="b" not-null="true" fetch="join"/> 

    hibernate中的,但是你这样好象是要不得,如果你用了
    多对一 :你就要在a表中 去掉bobjid bsrcid 而要生成b 表的类的实例,并生成get 和set 方法
    和一对多关系 :你可以在一的一方用 private HashSet set=null; 并<many-to-one>相关配制</many-to-one>
      

  3.   

    1.检查在hibernate配置文件中是否注解了<mapping resource="/a.hbm.xml" />这句话;2.b是否有对应的实体类?如果有,那么:下面class中的路径是这个实体类的路径。即:
    把many-to-one name="obj" column="objid" class="b" not-null="true" fetch="join"/>
      更改为
    <many-to-one name="obj" column="objid" class="b表实体类的路径" not-null="true" fetch="join"/>