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

  在用Spring + Hibernate重做公司以前的一个项目时,因为数据库都是遗留系统的,做数据映射遇到这么一个问题:
  表结构

RT_ROAD_SECTION JAM_CONFIG
--------------- ------------
RSID <pk>
JAM <fk> >------+ ID <pk>
... ... DESC

  表RT_ROAD_SECTION是某个路段的拥堵状况,其中拥堵状况是通过外键JAM关联到配置表JAM_CONFIG。因为这张表不具备实体特性,我只设计了一个实体类:

public class RoadSectionStatus {
int id;
String jam;
... ... // 其它字段及get/set省略
}

  其中jam就是JAM_CONFIG里的DESC了。映射文件如下:
    
<class name="RoadSectionStatus"
table="RT_ROAD_SECTION">
<id name="id" column="RSID" type="integer">
<generator class="assigned" />
</id>

<join table="JAM_CONFIG">
<key column="ID" />
<property name="jam" colunm="DESC" type="string" />
</join>
</class>

  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属性,配置文件中添加:

<property name="jamId" column="JAM" type="integer" />
...
<key column="ID" property-ref="jamId" />

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

--希望看一下,看看这个问题该如何解决?
(由于我是新注册用户,需要30天才能在论坛上发表提问,所以只好先把问题贴到这来了,希望大家看到了能回复一下 :arrow: )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值