3

iBatis に、まったく同じデータベース列名を持つ入れ子になった ResultMap がいくつかあります。これによりあいまいさが生じ、異なるデータベース テーブルに対して誤った結果が取得されます。

たとえば、 `

<sql namespace="Shipment">

       <resultMap id="consignment" class="com.model.Consignment">
              <result property="consignmentId" column="Consignment_cd" />
              <result property="shipmentCd" column="Shipment_cd" />
              <result property="shipmentUnit" column="Shipment_Unit" />
              <result property="location"  resultMap="Shipment.size" />
       </resultMap>

      <resultMap id="size" class="com.model.Size">
              <result property="consignmentId" column="Consignment_cd" />
              <result property="shipmentCd" column="Shipment_cd" />
              <result property="shipmentUnit" column="Shipment_Unit" />
      </resultMap>

    </sql>

`

Size & Consignment テーブルを結合する選択クエリを作成すると、Shipment Code と Shipment Unit には同じ値が返されますが、データベース内のこれら 2 つの列には異なる値があります。単一のクエリでプルアップされたサイズと委託の両方のレベルから出荷コードと単位の両方が必要であることに注意してください。

誰かがこの問題を解決するのを手伝ってくれますか?

4

1 に答える 1

1

この問題に対して私が見つけた唯一の解決策は、列名の前にテーブル名または短い名前を付けることです。あなたは自分でクエリを書いていますよね?

あなたの選択は次のようになります

select consignment.Shipment_cd as consignment_Shipment_cd, 
       size.Shipment_cd as size_Shipment_cd
from consignment
join size on whatever

はい、同じクエリで多くのものを取得したい場合、それはかなり重いです

于 2013-04-17T15:16:10.993 に答える