If a <statement> has a "cacheModel" attribute set and
cacheModelsEnabled="false" in SqlMap.config, an DataMapperException is thrown
-----------------------------------------------------------------------------------------------------------------------------------
Key: IBATISNET-51
URL: http://issues.apache.org/jira/browse/IBATISNET-51
Project: iBatis for .NET
Type: Bug
Versions: DataMapper 1.2
Environment: [assembly: AssemblyVersion("1.1.458")]
DataMapper from 5/5/2005 SVN
Reporter: Ron Grabowski
Assigned to: Gilles Bayon
Priority: Minor
As of 5/5/2005, the version in SVN incorrectly throws an exception if a
<statement> has a cacheModel attribute set to a valid <cacheModel>:
<cacheModels>
<cacheModel id="StateCache" type="LRU" implementation="MEMORY" >
<flushInterval hours="12"/>
</cacheModel>
</cacheModels>
<statements>
<select id="GetOne" resultMap="StateResult" cacheModel="StateCache"
parameterClass="int">
and the cacheModelsEnabled attribute is set to false in SqlMap.config:
<settings>
<setting useStatementNamespaces="true"/>
<setting cacheModelsEnabled="false"/>
</settings>
The following exception is thrown:
"
[DataMapperException: This SQL map does not contain an Cache named
State.StateCache]
IBatisNet.DataMapper.SqlMapper.GetCache(String name) in
\IBatisNet.DataMapper\SqlMapper.cs:1229
IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.Initialize() in
\IBatisNet.DataMapper\Configuration\DomSqlMapBuilder.cs:384
IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.Build(XmlDocument
document, DataSource dataSource, Boolean useConfigFileWatcher, Boolean
isCallFromDao) in \IBatisNet.DataMapper\Configuration\DomSqlMapBuilder.cs:149
[ConfigurationException:
- The error occurred while Set CacheModel to statement.
- statement :State.GetOne
- The error occurred in cacheModel : State.StateCache.
- Check the .]
"
The exception is caused by this code starting on line 373 of
DomSqlMapBuilder.cs:
#region Attach CacheModel to statement
foreach(DictionaryEntry entry in _configScope.SqlMapper.MappedStatements)
One way to prevent the exception would be to not go into the foreach loop if
caching is disabled:
#region Attach CacheModel to statement
if (_configScope.IsCacheModelsEnabled)
{
foreach(DictionaryEntry entry in _configScope.SqlMapper.MappedStatements)
A few lines later in the file there is this code:
_configScope.ErrorContext.MoreInfo = "statement
:"+mappedStatement.Statement.Id;
_configScope.ErrorContext.Resource = "cacheModel : "
+mappedStatement.Statement.CacheModelName;
There is a space missing after "statement :". It should be:
_configScope.ErrorContext.MoreInfo = "statement :
"+mappedStatement.Statement.Id;
_configScope.ErrorContext.Resource = "cacheModel : "
+mappedStatement.Statement.CacheModelName;
--
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