2个实体A和B,A配置中:
<set name="b" cascade="none" lazy="false">
     <key column="KEY_ID" />
     <one-to-many class="com.domain.B" />
             </set>
我怎么知道A的KEY_ID是和B的哪个字段关联呢?

解决方案 »

  1.   

    我的意思是:
    select * from A where ID=XXX
    取出来A中应该也包含与其对应的n个B,B是通过什么字段与之对应的?具体配置在哪里?一般都是按照下面的方式获取
    select * from A a where a.ID=XXX AND a.b.ID
    只是突然想到上面的问题,不知道能不能实现,
      

  2.   

    最TM讨厌这种B人,什么都说不出还拽的跟250一样,知道还问么
      

  3.   

    楼主,比如现在我有两个表:菜单表(你所说的A表)和角色菜单表(你所说的B表)。菜单表和角色菜单表是一对多的关系。因为一个菜单可以同时存在于多个角色中,但是一个角色却只能够包含有这一个菜单(但是并不是说仅有这一个菜单哦)。那么配置如下:
    菜单表的配置:
    <set name="bpSmRolePrivs" inverse="true" cascade="delete">
           <key>
               <column name="MENU_ID" precision="22" scale="0" not-null="true" />
           </key>
           <one-to-many class="com.szhtp.booking.system.db.entity.BpSmRolePriv" />
    </set>
    其中bpSmRolePrivs是在A表的POJO中定义的set属性值(private Set bpSmRolePrivs = new HashSet(0));MENU_ID是在B表中定义的一列的字段值;com.szhtp.booking.system.db.entity.BpSmRolePriv对应的是B表的POJO。不知道我这样讲明白了没?其实你那个值应该填的是B表你定义的那个javabean中对应的那个数据库中的字段。
      

  4.   

    <one-to-many class="com.domain.B" />
    这个class类中对应的数据库表中的KEY_ID字段
      

  5.   

    但是我试了一下,会报错:
    org.springframework.dao.InvalidDataAccessResourceUsageException: could not initialize a collection: [com.domain.A.b#807]; nested exception is org.hibernate.exception.DataException: could not initialize a collection: [com.domain.A.b#807]
    有什么要注意的地方吗?
      

  6.   

    好了,原来是B表中的数据超过了bean中设定的数据类型的大小,谢谢各位了