You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Gilles Bayon (JIRA)" <ib...@incubator.apache.org> on 2006/07/19 21:19:14 UTC
[jira] Closed: (IBATISNET-168) The parameter class reflection does
not work anymore
[ http://issues.apache.org/jira/browse/IBATISNET-168?page=all ]
Gilles Bayon closed IBATISNET-168.
----------------------------------
Fix Version/s: DataMapper 1.5.1
Resolution: Fixed
Assignee: Gilles Bayon
In SVN
> The parameter class reflection does not work anymore
> ----------------------------------------------------
>
> Key: IBATISNET-168
> URL: http://issues.apache.org/jira/browse/IBATISNET-168
> Project: iBatis for .NET
> Issue Type: Bug
> Components: DataMapper
> Affects Versions: DataMapper 1.5
> Environment: Windows 2003 server, dot net framework 2.0, VS2005
> Reporter: cristian manea
> Assigned To: Gilles Bayon
> Priority: Blocker
> Fix For: DataMapper 1.5.1
>
>
> Hello.
> We have upgraded our project from dnf 1.1 to dnf 2.0 vs2005, so we have upgraded to Data Mapper 1.5 (from 1.3).
> It seams that the dynamic class reflection for the query parameters does not work anymore in 1.5, in the 1.3 version it work just fine. It is really a blocking situation for us, because...it simply does not work anymore :(
> We are using a solution where the parameter that we are passing is a "generic" one, and has this definition:
> public class Query
> {
> private Object _DataObject;
> public Object DataObject{get{return _DataObject; }set { _DataObject = value;}}
> private Object _ParametersObject;
> public object ParametersObject{get { return _ParametersObject; }set { _ParametersObject = value; }}
> }
> Then we are passing to iBatis (by internal convention) the "parameters" embeded in the Query class, here is an example:
>
> obj_Query.ParametersObject = Parameters; //here we are setting our Parameters object
> obj_Query.DataObject = Labels[0]; //here we are setting our Business Object
> objLabel = (Label) Helpers.Label().Read(obj_Query); //here we are calling by passing the query object
> Assert.IsNotNull (objLabel, "Label not returned");
> .............................................................................................
> public override System.Object Read(System.Object obj)
> {
> Labels objLabel = (Label) Mapper ().QueryForObject("SelectLabel",obj);
> return(objLabel);
> }
> The mapped statemend in the sqlmap file is as follows:
> <select id="SelectLabel" parameterClass="Query" resultMap="LabelResult">
> select *
> from ll_label_language
> <dynamic prepend="WHERE">
> <isParameterPresent>
> <isNotNull property="DataObject">
> <isGreaterThan property="DataObject.Id" compareValue="0" prepend="AND">
> label_language_id = #DataObject.Id#
> </isGreaterThan>
> <isGreaterThan property="DataObject.LabelId" compareValue="0" prepend="AND">
> label_id = #DataObject.LabelId#
> </isGreaterThan>
> </isNotNull>
> <isNotNull property="ParametersObject" prepend="AND">
> language_id = #ParametersObject.LanguageId#
> </isNotNull>
> </isParameterPresent>
> </dynamic>
> </select>
> iBatis 1.5 returns this error (it does not understand that the DataObject is in fact a Label, and not an Object):
> failed: IBatisNet.Common.Exceptions.ConfigurationException :
> - The error occurred while loading SqlMap.
> - parse dynamic tags on sql statement
> - The error occurred in <sqlMap resource="${root}Resources/LabelHelper.xml" xmlns="http://ibatis.apache.org/dataMapper" />.
> - Check the SelectLabel.
> ----> IBatisNet.Common.Exceptions.ProbeException : There is no Get member named 'Id' in class 'Object'
> at IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.Build(XmlDocument document, DataSource dataSource, Boolean useConfigFileWatcher, Boolean isCallFromDao)
> at IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.ConfigureAndWatch(String resource, ConfigureHandler configureDelegate)
> at IBatisNet.DataMapper.Mapper.InitMapper()
> at IBatisNet.DataMapper.Mapper.Instance()
> C:\Documents and Settings\Administrator\Favorites\LogiqLibrary\Source\LL\LL_BusinessObjects\Helper.cs(18,0): at LL_BusinessObjects.Helper.Mapper()
> C:\Documents and Settings\Administrator\Favorites\LogiqLibrary\Source\LL\LL_BusinessObjects\LanguageHelper.cs(17,0): at LL_BusinessObjects.LanguageHelper.ReadList(Object obj)
> C:\Documents and Settings\Administrator\Favorites\LogiqLibrary\Source\LL\LL_Tests\DAL_tests.cs(27,0): at LL_Tests.DAL_tests.LanguageSelects()
> --ConfigurationException
> at IBatisNet.Common.Utilities.Objects.ReflectionInfo.GetGetterType(String memberName)
> at IBatisNet.Common.Utilities.Objects.ObjectProbe.GetMemberTypeForGetter(Type type, String memberName)
> at IBatisNet.DataMapper.Configuration.ParameterMapping.InlineParameterMapParser.ResolveTypeHandler(TypeHandlerFactory typeHandlerFactory, Type parameterClassType, String propertyName, String propertyType, String dbType)
> at IBatisNet.DataMapper.Configuration.ParameterMapping.InlineParameterMapParser.NewParseMapping(String token, Type parameterClassType, IScope scope)
> at IBatisNet.DataMapper.Configuration.ParameterMapping.InlineParameterMapParser.ParseInlineParameterMap(IScope scope, IStatement statement, String sqlStatement)
> at IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.ParseDynamicTags(XmlNode commandTextNode, IDynamicParent dynamic, StringBuilder sqlBuffer, Boolean isDynamic, Boolean postParseRequired, IStatement statement)
> at IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.ParseDynamicTags(XmlNode commandTextNode, IDynamicParent dynamic, StringBuilder sqlBuffer, Boolean isDynamic, Boolean postParseRequired, IStatement statement)
> at IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.ParseDynamicTags(XmlNode commandTextNode, IDynamicParent dynamic, StringBuilder sqlBuffer, Boolean isDynamic, Boolean postParseRequired, IStatement statement)
> at IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.ParseDynamicTags(XmlNode commandTextNode, IDynamicParent dynamic, StringBuilder sqlBuffer, Boolean isDynamic, Boolean postParseRequired, IStatement statement)
> at IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.ParseDynamicTags(XmlNode commandTextNode, IDynamicParent dynamic, StringBuilder sqlBuffer, Boolean isDynamic, Boolean postParseRequired, IStatement statement)
> at IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.ProcessSqlStatement(IStatement statement)
> at IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.ConfigureSqlMap()
> at IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.Initialize()
> at IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.Build(XmlDocument document, DataSource dataSource, Boolean useConfigFileWatcher, Boolean isCallFromDao)
> Thank you for your support.
> Cristian Manea
> www.atypiqsoftware.ro
--
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