一个具体类对应多张表的问题?

阅读更多
  在用Spring + Hibernate重做公司以前的一个项目时,因为数据库都是遗留系统的,做数据映射遇到这么一个问题:
  表结构
      RT_ROAD_SECTION         JAM_CONFIG
      ---------------         ------------
      RSID                           
      JAM        >------+ ID 
      ... ...                 DESC

  表RT_ROAD_SECTION是某个路段的拥堵状况,其中拥堵状况是通过外键JAM关联到配置表JAM_CONFIG。因为这张表不具备实体特性,我只设计了一个实体类:
    public class RoadSectionStatus { 
        int id; 
        String jam; 
        ... ... // 其它字段及get/set省略
    }

  其中jam就是JAM_CONFIG里的DESC了。映射文件如下:
    
            
               
                  
               

               
                  
                  
               
            

  Hibernate参考文档里面说join可以把一个实体类映射到多个表,但例子中join的table="ADDRESS"是从表,关联到class对应的主表PERSON。而我这里join的JAM_CONFIG却是主表,我不知道如何去配置。上面的映射文件生成的SQL如下:
    
select rs.ID, cfg.DESC
    from   RT_ROAD_SECTION rs
           left outer join JAM_CONFIG cfg 
                      on rs.RSID = cfg.ID

  显然rs.RSID = cfg.ID不对,应该为rs.JAM = cfg.ID就对了。我于是给RoadSectionStatus加上jamId属性,配置文件中添加:
    
      ...
    

  告诉Hibernate是JAM_CONFIG.ID关联到RT_ROAD_SECTION.JAM,而不是关联到主键RSID上(实际应该反过来,是从表外键JAM关联到主表JAM_CONFIG的主键ID上),但是生成出来的结果还是一样。

--希望看一下,看看这个问题该如何解决?
(由于我是新注册用户,需要30天才能在论坛上发表提问,所以只好先把问题贴到这来了,希望大家看到了能回复一下

你可能感兴趣的:(Hibernate,Java,Spring,数据结构,SQL)