I'm now starting to get into using ibatis3 more and I'm curious about why a 'roll up' is happening (based on a column I didn't mention as a rollup column) when I use an association. I'm sure it's something stupid I'm missing but I don't see it.
For example this flat structure works just fine, and its what I've used in ibatis2 for a simple flat structure: <resultMap id="ProdAttrGroupAttrValueResultWithAttributeValue" type="ProdAttrGroupAttrValue"> <result column="defaultValueFlag" property="defaultValueFlag" jdbcType="CHAR" /> <result column="objectType" property="objectType" jdbcType="VARCHAR" /> <result column="parentValueID" property="parentValueID" jdbcType="INTEGER" /> <!-- the ProAttrGroupAttrValue has an attributeValue object property: --> <result property="attributeValue.attributeValueID" column="attributeValueID"/> <result column="value" property="attributeValue.value" jdbcType="VARCHAR"/> <result column="attributeValueDesc" property="attributeValue.attributeValueDesc" jdbcType="VARCHAR" /> <result column="requiredFlag" property="attributeValue.requiredFlag" jdbcType="CHAR" /> </resultMap> But I thought I should follow ibatis3 conventions and use an association to make it more clear: <resultMap id="ProdAttrGroupAttrValueResultWithAttributeValue" type="ProdAttrGroupAttrValue"> <result column="defaultValueFlag" property="defaultValueFlag" jdbcType="CHAR" /> <result column="objectType" property="objectType" jdbcType="VARCHAR" /> <result column="parentValueID" property="parentValueID" jdbcType="INTEGER" /> <!-- using an association instead --> <association property="attributeValue" column="attributeValueID" javaType="AttributeValue"> <id property="attributeValueID" column="attributeValueID"/> <result column="value" property="value" jdbcType="VARCHAR"/> <result column="attributeValueDesc" property="attributeValueDesc" jdbcType="VARCHAR" /> <result column="requiredFlag" property="requiredFlag" jdbcType="CHAR" /> </association> </resultMap> However, when I use the latter association approach I end up getting rows completely thrown out, but I'm not sure why and/or what logic its using. The query returns 13 rows, but I only end up with 7 objects in the latter association approach.. DEBUG [main] java.sql.PreparedStatement debug- ==> Parameters: 2(Integer), 12(Integer), 100(Integer) DEBUG [main] java.sql.ResultSet debug- <== Columns: parentValueID, objectType, defaultValueFlag, attributeValueID, value, attributeValueDesc, requiredFlag DEBUG [main] java.sql.ResultSet debug- <== Row: 15282, Checkbox, Y, 9042, AA, US AA %, N DEBUG [main] java.sql.ResultSet debug- <== Row: 15282, Checkbox, N, 9043, GAA, US GAA %, N DEBUG [main] java.sql.ResultSet debug- <== Row: 9043, Checkbox, N, 12059, nonOrderedGAATelecasts, Allow Non Ordered GAA, N DEBUG [main] java.sql.ResultSet debug- <== Row: 15282, Checkbox, N, 12371, cvgAApercent, CVG AA %, N DEBUG [main] java.sql.ResultSet debug- <== Row: 15282, Checkbox, N, 13260, cvgGAApercent, CVG GAA %, N DEBUG [main] java.sql.ResultSet debug- <== Row: 12524, Checkbox, N, 9044, HUT/Share, US HUT/PUT and Share %, N DEBUG [main] java.sql.ResultSet debug- <== Row: 12524, Checkbox, N, 9063, MAMI, Median Age / Median Income, N DEBUG [main] java.sql.ResultSet debug- <== Row: 15298, Checkbox, N, 15299, indexP2, Index % P2+, N DEBUG [main] java.sql.ResultSet debug- <== Row: 15298, Checkbox, N, 15304, CVG_Index_P18_plus, CVG Index % P18+, N DEBUG [main] java.sql.ResultSet debug- <== Row: 12396, Checkbox, N, 12391, Commercial, National Commercial Statistics, N DEBUG [main] java.sql.ResultSet debug- <== Row: 15284, Checkbox, N, 9064, RGL, Reach, Gain/Loss, N DEBUG [main] java.sql.ResultSet debug- <== Row: 15284, Checkbox, N, 11135, vcrContribution, VCR Contribution, N DEBUG [main] java.sql.ResultSet debug- <== Row: 15284, Checkbox, N, 11134, avgMinutesViewed, Average Minutes Viewed, N 13 rows but only 7 Objects using association: DEBUG [main] com.nielsen.dataselector.media.service.TestAttributeGroup testGetStatistics- TestAttributeGroup ProdAttrGroupAttrValue: com.nielsen.dataselector.media.service.model.prodattrgroupattrva...@40e99ce5 [ defaultValueFlag=Y objectType=Checkbox parentValueID=15282 productID=<null> sequenceNumber=<null> attributevalue=com.nielsen.dataselector.media.service.model.attributeva...@342f356f [ attributeValueDependencies=<null> attributeValueID=9042 value=AA attributeValueDesc=US AA % requiredFlag=N ] attributeGroup=<null> ] DEBUG [main] com.nielsen.dataselector.media.service.TestAttributeGroup testGetStatistics- TestAttributeGroup ProdAttrGroupAttrValue: com.nielsen.dataselector.media.service.model.prodattrgroupattrva...@75d252d[ defaultValueFlag=N objectType=Checkbox parentValueID=15282 productID=<null> sequenceNumber=<null> attributevalue=com.nielsen.dataselector.media.service.model.attributeva...@7433b121 [ attributeValueDependencies=<null> attributeValueID=13260 value=cvgGAApercent attributeValueDesc=CVG GAA % requiredFlag=N ] attributeGroup=<null> ] DEBUG [main] com.nielsen.dataselector.media.service.TestAttributeGroup testGetStatistics- TestAttributeGroup ProdAttrGroupAttrValue: com.nielsen.dataselector.media.service.model.prodattrgroupattrva...@6db22920 [ defaultValueFlag=N objectType=Checkbox parentValueID=9043 productID=<null> sequenceNumber=<null> attributevalue=com.nielsen.dataselector.media.service.model.attributeva...@4baa2c23 [ attributeValueDependencies=<null> attributeValueID=12059 value=nonOrderedGAATelecasts attributeValueDesc=Allow Non Ordered GAA requiredFlag=N ] attributeGroup=<null> ] DEBUG [main] com.nielsen.dataselector.media.service.TestAttributeGroup testGetStatistics- TestAttributeGroup ProdAttrGroupAttrValue: com.nielsen.dataselector.media.service.model.prodattrgroupattrva...@5f18223d [ defaultValueFlag=N objectType=Checkbox parentValueID=12524 productID=<null> sequenceNumber=<null> attributevalue=com.nielsen.dataselector.media.service.model.attributeva...@29700391 [ attributeValueDependencies=<null> attributeValueID=9063 value=MAMI attributeValueDesc=Median Age / Median Income requiredFlag=N ] attributeGroup=<null> ] DEBUG [main] com.nielsen.dataselector.media.service.TestAttributeGroup testGetStatistics- TestAttributeGroup ProdAttrGroupAttrValue: com.nielsen.dataselector.media.service.model.prodattrgroupattrva...@78fa39d7 [ defaultValueFlag=N objectType=Checkbox parentValueID=15298 productID=<null> sequenceNumber=<null> attributevalue=com.nielsen.dataselector.media.service.model.attributeva...@73eb904d [ attributeValueDependencies=<null> attributeValueID=15304 value=CVG_Index_P18_plus attributeValueDesc=CVG Index % P18+ requiredFlag=N ] attributeGroup=<null> ] DEBUG [main] com.nielsen.dataselector.media.service.TestAttributeGroup testGetStatistics- TestAttributeGroup ProdAttrGroupAttrValue: com.nielsen.dataselector.media.service.model.prodattrgroupattrva...@6e4eeaaf [ defaultValueFlag=N objectType=Checkbox parentValueID=12396 productID=<null> sequenceNumber=<null> attributevalue=com.nielsen.dataselector.media.service.model.attributeva...@7f11bfbc [ attributeValueDependencies=<null> attributeValueID=12391 value=Commercial attributeValueDesc=National Commercial Statistics requiredFlag=N ] attributeGroup=<null> ] DEBUG [main] com.nielsen.dataselector.media.service.TestAttributeGroup testGetStatistics- TestAttributeGroup ProdAttrGroupAttrValue: com.nielsen.dataselector.media.service.model.prodattrgroupattrva...@664310d0 [ defaultValueFlag=N objectType=Checkbox parentValueID=15284 productID=<null> sequenceNumber=<null> attributevalue=com.nielsen.dataselector.media.service.model.attributeva...@3d04fc23 [ attributeValueDependencies=<null> attributeValueID=11134 value=avgMinutesViewed attributeValueDesc=Average Minutes Viewed requiredFlag=N ] attributeGroup=<null> ]