[ http://issues.apache.org/jira/browse/IBATISNET-2?page=all ]
Gilles Bayon reassigned IBATISNET-2: ------------------------------------ Assign To: Roberto Rabe (was: Gilles Bayon) > Inline null default causes exception for complex properties > ----------------------------------------------------------- > > Key: IBATISNET-2 > URL: http://issues.apache.org/jira/browse/IBATISNET-2 > Project: iBatis for .NET > Type: Bug > Reporter: Gilles Bayon > Assignee: Roberto Rabe > Attachments: Account.xml.patch, IBatisNet.Test.Patches.zip > > Currently, NPetshop running on Access through OLEDB > gives an error when creating an Account. > Fix is to change InsertProfile statement from: > #Profile.IsShowFavorites#, #Profile.IsShowBanners# > to: > #Profile.IsShowFavorites:Boolean#, > #Profile.IsShowBanners:Boolean# > Unfortunately, this won't work if a default null value is > given (exception about parameter not being found is > thrown): > #Profile.IsShowFavorites:Boolean:false#, > #Profile.IsShowBanners:Boolean:false# > This is caused by the comparison of the propertyName > Profile.IsShowFavorites to the Account property names > (hashtable that contains a property called Profile) when > a default null value is specified. This is being done in > ParameterMap.cs line 264 - 268. > I'm also not sure why this doesn't work and causes the > generated SQL statement to show the inline parameters > instead of '?'s: > <parameterMap id="AccountParam"> > <parameter property="Login" column="Account_Id"/> > <parameter property="Password" > column="SignOn_Password"/> > <parameter property="Email" column="Account_Email"/> > <parameter property="Status" > column="Account_Status" /> > <parameter property="Address.FirstName" > column="Account_FirstName"/> > <parameter property="Address.LastName" > column="Account_LastName"/> > <parameter property="Address.Address1" > column="Account_Addr1"/> > <parameter property="Address.Address2" > column="Account_Addr2"/> > <parameter property="Address.City" > column="Account_City"/> > <parameter property="Address.State" > column="Account_State"/> > <parameter property="Address.Zip" > column="Account_Zip"/> > <parameter property="Address.Country" > column="Account_Country"/> > <parameter property="Address.Phone" > column="Account_Phone"/> > <parameter property="Profile.FavoriteLanguage" > column="Profile_LangPref"/> > <parameter property="Profile.FavouriteCategory.Id" > column="Profile_FavCategory"/> > <parameter property="Profile.IsShowFavorites" > column="Profile_MyListOpt" dbType="Boolean"/> > <parameter property="Profile.IsShowBanners" > column="Profile_BannerOpt" dbType="Boolean"/> > </parameterMap> > 2004-10-20 23:27:37,115 [3120] DEBUG > IBatisNet.DataMapper.MappedStatements.MappedStatem > ent [] - SQL for command: insert into Profiles > (Profile_LangPref, Profile_FavCategory, > Profile_MyListOpt, Profile_BannerOpt, Account_Id) > values (#Profile.FavoriteLanguage#, > #Profile.FavouriteCategory.Id#, > #Profile.IsShowFavorites#, #Profile.IsShowBanners#, > #Login#) > Even stranger was that when I specified the dbType for > FavoriteLanguage as String in addition to the existing > Boolean dbTypes already specified, the SqlMap wasn't > being built properly by DomSqlMapBuilder (it did work > again when I removed it). > Looking through all this code has been great > though...hehe... > Roberto -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira