论坛首页 入门技术论坛

多表关联的时候,字段名重复了,郁闷!大家有什么解决办法么?

浏览 6013 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-01-17  
主表关联几个master表,查询出来结果发现有问题。仔细一看,原来很多master表的字段名称都一样,这样在映射到resultmap的时候,取出来的就有问题。不知道有没有办法给property起个别名,加个限定之类的办法?比如bean1.id bean2.id
   发表时间:2007-01-17  
sql语句的问题吧
放出来看看
0 请登录后投票
   发表时间:2007-01-17  
  <result property="MColor" resultMap="m_color.mColorResult"/>
  <result property="MRole" resultMap="m_role.mRoleResult"/>
  <resultMap id="mColorResult" class="MColor" >
    <result column="f_id" property="FId" jdbcType="VARCHAR" />
    <result column="f_value" property="FValue" jdbcType="VARCHAR" />
    <result column="f_is_active" property="FIsActive" jdbcType="CHAR" />
    <result column="f_order" property="FOrder" jdbcType="NUMERIC" />
  </resultMap>


举个例子,这里主表关联了两个master表: m_color,m_role,并且这两个master表结构都是一样的,包括字段名。我在主表查询中写的是 select * ,检索的是全字段。不过这些字段中有名称重复的。现在似乎ibatis并没有依据字段的全限定名匹配bean的属性名,而是简单的用字段名(fId,fValue,,,)直接填充bean了,不知道我说明白没有

又被移到新手区了 ,难道解决不了的问题都给弄到这里么?记得好像上次发贴也很快就被K了
0 请登录后投票
   发表时间:2007-01-17  
入门问题十在不想回答。。。
但是你要先给出
两个表的sql
对应的Ibits的map全部的文件包括应射与select语句

但最要命的是你可以通过重构来完成你的问题
0 请登录后投票
   发表时间:2007-01-17  
自身的例子限于机密保持契约,不方便贴出来。
不过我的问题完全可以用iBatis的官方文档v2.0中第40页的内容来参考
<sqlMap namespace="ProductCategory">
<resultMap id=”categoryResult” class=”com.ibatis.example.Category” groupBy=”id”>
<result property=”id” column=”CAT_ID”/>
<result property=”description” column=”CAT_DESCRIPTION”/>
<result property=”productList” resultMap=”ProductCategory.productResult”/>
</resultMap>
<resultMap id=”productResult” class=”com.ibatis.example.Product”>
<result property=”id” column=”PRD_ID”/>
<result property=”description” column=”PRD_DESCRIPTION”/>
</resultMap>
<select id=”getCategory” parameterClass=”int” resultMap=”categoryResult”>
select C.CAT_ID, C.CAT_DESCRIPTION, P.PRD_ID, P.PRD_DESCRIPTION
from CATEGORY C
left outer join PRODUCT P
on C.CAT_ID = P.PRD_CAT_ID
where CAT_ID = #value#
</select>
</sqlMap>

这里productResult和categoryResult中同时使用了相同名字的property(都是id,description),不会有问题么?
从preparestatement log来看,rs中这些字段都没有使用全限定名(当然,可能是为了log清晰),不知道iBatis到此会如何将rs中某个字段映射到resultmap中的bean类型属性的某个属性上。
0 请登录后投票
   发表时间:2007-01-17  
你写的sqlmap的参数个数与sql中返回的参数个数不匹配。。。
你没有看过文档。。。
这种事有前例可查。。。。
没有指定反回对就的Bean类型。。
0 请登录后投票
   发表时间:2007-01-17  
拜托  一个SQL而已  有什么好保密的  又不知道都是啥东西   实在不行改两个名字不就完事了么

你给出的iBatis的东西   你仔细看一下  那个sql返回的是 resultMap=”categoryResult”
上面的那个 id=”productResult” 的 resultMap 里面的property是否有叫id或者什么的  对那个SQL没有影响
0 请登录后投票
   发表时间:2007-01-18  
抛出异常的爱 写道
你写的sqlmap的参数个数与sql中返回的参数个数不匹配。。。
你没有看过文档。。。
这种事有前例可查。。。。
没有指定反回对就的Bean类型。。


这个,,确实只是通读了一下文档,但是重点部分也留意了,而且我也有到mail list里去找前例。。唉,,不过非常感谢"sqlmap的参数个数与sql中返回的参数个数不匹配",今天我再调查一下。
0 请登录后投票
   发表时间:2007-01-18  
ddandyy 写道
拜托  一个SQL而已  有什么好保密的  又不知道都是啥东西   实在不行改两个名字不就完事了么

你给出的iBatis的东西   你仔细看一下  那个sql返回的是 resultMap=”categoryResult”
上面的那个 id=”productResult” 的 resultMap 里面的property是否有叫id或者什么的  对那个SQL没有影响


呵呵,多谢回复。

确实没啥好保密的,但是有些地方很讲究这些,出了问题吃不了兜着走。

从两位的回复看,似乎property name可以相同,我再调查一下
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics