Lists of primitives in result maps doesn't work
-----------------------------------------------
Key: IBATISNET-243
URL: https://issues.apache.org/jira/browse/IBATISNET-243
Project: iBatis for .NET
Issue Type: Bug
Components: DataMapper
Affects Versions: DataMapper 1.6.1
Reporter: Gilles Bayon
Assignee: Gilles Bayon
Fix For: DataMapper 1.6.2
Detected by Miika Mäkinen, Nicholas Piaseck
I have a Coupon class that contains an integer list of BrandIds that
specifies which brands of product the coupon is good for. We don't want
the whole Brand object because it contains a lot of information that's
not necessary for the coupon's CalculateDiscount() method to function,
so we'd just like a list of integers returned from iBATIS. int[],
List<int>, just a list of integers of some sort.
The relevant parts of the database tables look like this:
Coupons:
CouponId (PK)
Code
Coupons_Brands: (M:N relationship table)
CouponId (FK)
BrandId (FK)
To avoid the N+1 selects, we tried a SQL statement like the following:
SELECT
cou.CouponId AS CouponId,
cou.Code AS CouponCode,
cou_b.BrandId AS CouponBrandId,
FROM SkiviezInv.Coupons AS cou
LEFT OUTER JOIN Coupons_Brands AS cou_b
ON cou.CouponId = cou_b.CouponId
But then we got stuck at defining the <resultMap>. Just using the
property and column attributes doesn't work ("no type handler for List`1
is registered"). The furthest we got was defining another result map for
the integer type, like this:
<resultMap id="ResultMapCoupon" class="Coupon" groupBy="Id">
<result column="CouponId" property="Id" />
<result
property="BrandIds"
resultMapping="Coupon.ResultMapCouponBrandId" />
</resultMap>
<resultMap id="ResultMapCouponBrandId" class="int">
<result property="value" column="CouponBrandId" />
</resultMap>
This set up would indeed create a List<int> with the proper Count (e.g.,
two BrandIds), but they're always all set to 0. I
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.