有这样一个需求,有两张表它们具有一对多的关系(A,B),现在A表中有一个普通字段(testId)作为B表的外键(testId)(在表中没有设定这种关系),我在hibernate中按常规的一对多的配置文件设好后,hibernate默认的都是会去A表中找它的主键字段,可这不是我想要的效果(我需要它去找那个普通字段testId),hibernate里面可以通过配置实现我想要的这种想过吗?  先谢过各位朋友!

解决方案 »

  1.   

    既然是外键,那B表中testId有的值,A表的testId也有,且相等,那么取哪个testId有区别么。
    你是想问不想连A表么,延迟加载即可。
      

  2.   

    谢谢楼上的兄弟了,目前的情况是这样的,我用hibernate查出了B表中的一条记录,然后因A和B两表有关系,所以他会拿着B表中查出的testId去A表中查询,并且查询条件是 where A表的主键=testId(从B表查出的testId),  但是这不是我想要的结果,我希望它能where A表的testId=testId(从B表查出的testId)这样的效果.可以通过hibernate配置文件实现吗?
      

  3.   

    对了,这里应该不能说是外键(如果是外键的话testId必须是A表的主键),只能说是一种参照关系.
      

  4.   

    刚看了hibernate的文档,用property-ref专门引用另一张表的非主键字段
      

  5.   

    在你多对一的那一端配置:
    <!-- 配置h_rid的关联为另一个表不允许重复的字段 -->
    <many-to-one name="h_rid" property-ref="Housename" column="Housename"/>
    一对多那一端配置:
    <set name="h_manage" inverse="true" >
    <key column="h_rid" property-ref="Housename"/>
    <one-to-many class="com.property.manage.entity.Home_manage"/>
    </set>
      

  6.   

    不允许重复的字段是那个Housename  这样配置他关联的是Housename  而不是里的id