Hi Pavel...Thanks for the update. I seem to be doing something wrong. I am
still getting the same error even after applying the update you suggested.
Not sure if the way I specified the types for the columns in java matched
against definitions in SQL Server. I am attaching below the column types
from SQL Server.
[image: Inline image 1]
Below is the updated config xml
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="BU"/>
<property name="writeThrough" value="true"/>
<property name="readThrough" value="true"/>
<property name="writeBehindEnabled" value="true"/>
<property name="writeBehindFlushFrequency" value="120000"/>
<property name="cacheStoreFactory">
<bean
class="org.apache.ignite.platform.dotnet.PlatformDotNetCacheStoreFactory">
<property name="typeName"
value="TestIgniteDAL.SQLServerStore, TestIgniteDAL"/>
</bean>
</property>
<property name ="typeMetadata">
<list>
<bean class="org.apache.ignite.cache.CacheTypeMetadata">
<!-- Type to query. -->
*<property name="valueType" value="BusinessUnit"/>*
<!-- Fields to be queried. -->
<property name="queryFields">
<map>
<entry key="BUID" value="java.lang.Long"/>
<entry key="BUName" value="java.lang.String"/>
<entry key="CreatedByID" value="java.lang.Long"/>
<entry key="CreatedDate" value="java.util.Date"/>
<entry key="ModifiedByID" value="java.lang.Long"/>
<entry key="ModifiedDate" value="java.util.Date"/>
</map>
</property>
<!-- Fields to index in ascending order. -->
<property name="ascendingFields">
<map>
<entry key="BUID" value="java.lang.Long"/>
</map>
</property>
</bean>
</list>
</property>
</bean>
</list>
</property>
Is there a different way to specify the indexed type? In java, I can
specify at the CacheConfiguration object leve, but .NET API had no such
method and spring config seems to be the only way unless I am missing
anything.
Your help is much appreciated,
Satya.
On Sun, Apr 10, 2016 at 9:23 AM, Pavel Tupitsyn <[email protected]>
wrote:
> Looks like the problem is here:
> <property name="valueType" value="TestIgniteDAL.BusinessUnit"/>
>
> Ignite uses type name without namespace in queries and binary objects, so
> correct line would be
>
> <property name="valueType" value="BusinessUnit"/>
>
> Let me know if this helps.
>
> Pavel.
>
>
> On Sun, Apr 10, 2016 at 1:16 PM, Murthy Kakarlamudi <[email protected]>
> wrote:
>
>> Hi Pavel,
>> Below is the link to download the solution. The attached solution has
>> 4 projects. TestIgniteServer is used to start Ignite node in server mode.
>> TestIgniteSQLClient is used to start Ignite in client mode and execute the
>> sql query against the cache.
>>
>> https://drive.google.com/open?id=0B8lM91-_3MwRYUxqX2ZHU0thRmc
>>
>> Thanks again for your help,
>> Satya.
>>
>> On Sun, Apr 10, 2016 at 2:33 AM, Pavel Tupitsyn <[email protected]>
>> wrote:
>>
>>> Satya, there is some issue with configuration in your code. Looks like
>>> you use different XML than provided above. Make sure the path is correct.
>>> Or, you can attach your entire solution, and I'll take a look.
>>>
>>> Pavel.
>>>
>>> On Sat, Apr 9, 2016 at 7:29 PM, Murthy Kakarlamudi <[email protected]>
>>> wrote:
>>>
>>>> Hi Pavel,
>>>> Is that the only change needed? I added that property and I am still
>>>> getting the same error.
>>>>
>>>> <property name="cacheConfiguration">
>>>> <list>
>>>> <bean
>>>> class="org.apache.ignite.configuration.CacheConfiguration">
>>>> *<property name="name" value="BU"/>*
>>>> <property name="writeThrough" value="true"/>
>>>> <property name="readThrough" value="true"/>
>>>> <property name="writeBehindEnabled" value="true"/>
>>>> <property name="writeBehindFlushFrequency" value="120000"/>
>>>> <property name="cacheStoreFactory">
>>>> <bean
>>>> class="org.apache.ignite.platform.dotnet.PlatformDotNetCacheStoreFactory">
>>>> <property name="typeName"
>>>> value="TestIgniteDAL.SQLServerStore, TestIgniteDAL"/>
>>>> </bean>
>>>> </property>
>>>> <property name ="typeMetadata">
>>>> <list>
>>>> <bean class="org.apache.ignite.cache.CacheTypeMetadata">
>>>> <!-- Type to query. -->
>>>> <property name="valueType"
>>>> value="TestIgniteDAL.BusinessUnit"/>
>>>> <!-- Fields to be queried. -->
>>>> <property name="queryFields">
>>>> <map>
>>>> <entry key="BUID" value="java.lang.Long"/>
>>>> <entry key="BUName" value="java.lang.String"/>
>>>> <entry key="CreatedByID" value="java.lang.Long"/>
>>>> <entry key="CreatedDate" value="java.util.Date"/>
>>>> <entry key="ModifiedByID" value="java.lang.Long"/>
>>>> <entry key="ModifiedDate" value="java.util.Date"/>
>>>> </map>
>>>> </property>
>>>> <!-- Fields to index in ascending order. -->
>>>> <property name="ascendingFields">
>>>> <map>
>>>> <entry key="BUID" value="java.lang.Long"/>
>>>> </map>
>>>> </property>
>>>> </bean>
>>>> </list>
>>>> </property>
>>>> </bean>
>>>> </list>
>>>> </property>
>>>>
>>>> Apache.Ignite.Core.Common.IgniteException was unhandled
>>>> HResult=-2146233088
>>>> Message=Indexing is disabled for cache: BU. Use setIndexedTypes or
>>>> setTypeMetadata methods on CacheConfiguration to enable.
>>>> Source=Apache.Ignite.Core
>>>> StackTrace:
>>>> at
>>>> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.Error(Void* target,
>>>> Int32 errType, SByte* errClsChars, Int32 errClsCharsLen, SByte*
>>>> errMsgChars, Int32 errMsgCharsLen, Void* errData, Int32 errDataLen)
>>>> at
>>>> Apache.Ignite.Core.Impl.Unmanaged.IgniteJniNativeMethods.CacheOutOpQueryCursor(Void*
>>>> ctx, Void* obj, Int32 type, Int64 memPtr)
>>>> at
>>>> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedUtils.CacheOutOpQueryCursor(IUnmanagedTarget
>>>> target, Int32 type, Int64 memPtr)
>>>> at Apache.Ignite.Core.Impl.Cache.CacheImpl`2.Query(QueryBase qry)
>>>> at TestIgniteSQLClient.IgniteSQLClient.Main(String[] args) in
>>>> C:\Data\Professional\dotnet\workspace\TestIgnite\TestIgniteSQLClient\IgniteSQLClient.cs:line
>>>> 34
>>>> InnerException:
>>>>
>>>>
>>>> On Sat, Apr 9, 2016 at 11:32 AM, Pavel Tupitsyn <[email protected]
>>>> > wrote:
>>>>
>>>>> Hi Satya,
>>>>>
>>>>> > Indexing is disabled for cache: BU.
>>>>> In the XML configuration, please set cache name like this:
>>>>>
>>>>> ...
>>>>> <bean class="org.apache.ignite.configuration.CacheConfiguration">
>>>>> <property name="name" value="BU"/>
>>>>> ...
>>>>>
>>>>>
>>>>> > do I have to specify the column type classes in java(ex
>>>>> java.lang.Long etc) in the config xml even if I am working in .NET world
>>>>> Yes, in 1.5, using Spring XML and Java types is the only way.
>>>>> This is already fixed, and in upcoming Ignite 1.6 everything can be
>>>>> configured right from C#.
>>>>>
>>>>> Thanks,
>>>>> Pavel.
>>>>>
>>>>> On Sat, Apr 9, 2016 at 5:10 PM, Murthy Kakarlamudi <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hi All,
>>>>>> I am running into below error trying to run SqlQuery in .NET.
>>>>>>
>>>>>> Apache.Ignite.Core.Common.IgniteException was unhandled
>>>>>> HResult=-2146233088
>>>>>> Message=Indexing is disabled for cache: BU. Use setIndexedTypes or
>>>>>> setTypeMetadata methods on CacheConfiguration to enable.
>>>>>> Source=Apache.Ignite.Core
>>>>>>
>>>>>> I am storing the entity created by Entity Framework in cache and
>>>>>> trying to query that POCO. Below are my Ignite config xml and the query I
>>>>>> am using.
>>>>>>
>>>>>> <property name="cacheConfiguration">
>>>>>> <list>
>>>>>> <bean
>>>>>> class="org.apache.ignite.configuration.CacheConfiguration">
>>>>>> <property name="writeThrough" value="true"/>
>>>>>> <property name="readThrough" value="true"/>
>>>>>> <property name="writeBehindEnabled" value="true"/>
>>>>>> <property name="writeBehindFlushFrequency" value="120000"/>
>>>>>> <property name="cacheStoreFactory">
>>>>>> <bean
>>>>>> class="org.apache.ignite.platform.dotnet.PlatformDotNetCacheStoreFactory">
>>>>>> <property name="typeName"
>>>>>> value="TestIgniteDAL.SQLServerStore, TestIgniteDAL"/>
>>>>>> </bean>
>>>>>> </property>
>>>>>> <property name ="typeMetadata">
>>>>>> <list>
>>>>>> <bean class="org.apache.ignite.cache.CacheTypeMetadata">
>>>>>> <!-- Type to query. -->
>>>>>> <property name="valueType"
>>>>>> value="TestIgniteDAL.BusinessUnit"/>
>>>>>> <!-- Fields to be queried. -->
>>>>>> <property name="queryFields">
>>>>>> <map>
>>>>>> <entry key="BUID" value="java.lang.Long"/>
>>>>>> <entry key="BUName" value="java.lang.String"/>
>>>>>> <entry key="CreatedByID" value="java.lang.Long"/>
>>>>>> <entry key="CreatedDate" value="java.util.Date"/>
>>>>>> <entry key="ModifiedByID" value="java.lang.Long"/>
>>>>>> <entry key="ModifiedDate" value="java.util.Date"/>
>>>>>> </map>
>>>>>> </property>
>>>>>> <!-- Fields to index in ascending order. -->
>>>>>> <property name="ascendingFields">
>>>>>> <map>
>>>>>> <entry key="BUID" value="java.lang.Long"/>
>>>>>> </map>
>>>>>> </property>
>>>>>> </bean>
>>>>>> </list>
>>>>>> </property>
>>>>>> </bean>
>>>>>> </list>
>>>>>> </property>
>>>>>>
>>>>>> using (var ignite = Ignition.Start(cfg))
>>>>>> {
>>>>>> Console.WriteLine(">>> Cache query example started");
>>>>>> var cache = ignite.GetCache<int, BusinessUnit>("BU");
>>>>>> var qry = cache.Query(new
>>>>>> SqlQuery(typeof(BusinessUnit),"BUID=?",5));
>>>>>> foreach(var bu in qry)
>>>>>> {
>>>>>> Console.WriteLine(bu);
>>>>>> }
>>>>>> }
>>>>>>
>>>>>> Also, do I have to specify the column type classes in java(ex
>>>>>> java.lang.Long etc) in the config xml even if I am working in .NET world.
>>>>>> Or can I use .NET equivalent classes from the POCO that was generated
>>>>>> from
>>>>>> Entity Framework?
>>>>>>
>>>>>> Thanks,
>>>>>> Satya.
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>