You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by narges saleh <sn...@gmail.com> on 2020/04/20 15:47:03 UTC
BinaryObject and CustomKey
Hi All,
If I have a query entity defined with composite CustomKey, how do I insert
to the cache,here, Customer, via the DataStreamer, using binary object
builder? Do I need to define an object for the composite CustomKey? I am
trying to define all the tables/caches via the configuration file. How do I
do streamer.addData to add the binary objects?
For example the QE is defined as
<bean class="org.apache.ignite.cache.QueryEntity">
<property name="keyType" value="CustomKey"/>
<property name="valueType"
value="Customer"/>
<property name="tableName"
value="Customer"/>
....
<property name="keyFields">
<set>
<value>Client_ID</value>
<value>Customer_ID</value>
</set>
</property>
thanks.
Re: BinaryObject and CustomKey
Posted by Evgenii Zhuravlev <e....@gmail.com>.
Please use builder from my example. You use wrong types here:
BinaryObjectBuilder builder1 = ignite.binary().builder("keys");
BinaryObjectBuilder builder2 = ignite.binary().builder("fields");
You should use the same types that you have in xml configuration.
Yes, you need to create 2 binary objects - one with key fields and the
second with value fields only.
пн, 20 апр. 2020 г. в 11:18, narges saleh <sn...@gmail.com>:
> Thanks Evgenii. I am still a little bit confused.
> So if my CustomKey is composed of Client_ID, Customer_ID, and other fields
> are Customer_name, Client_name, then I populate the cache this way? Do I
> need to build two binary objects, one for the custom key and another for
> the rest of the fields?
>
> IgniteDataStreamer<CustomKey, BinaryObject> streamer =
> grid.dataStreamer("Customer");
>
> streamer.keepBinary(true);
>
> BinaryObjectBuilder builder1 = ignite.binary().builder("keys");
>
> BinaryObjectBuilder builder2 = ignite.binary().builder("fields");
>
> BinaryObject b1 = null;
>
> BinaryObject b2 = null;
>
> builder1.setField("Client_ID", 1);
>
> builder1.setField("Customer_ID", 1);
>
> builder2.setField("customer_name", "jim");
>
> builder2.setField("client_name", "joe");
>
> b1 = builder1.build();
>
> b2 = builder2.build;
>
> streamer.adddata(b1, b2);
>
>
> On Mon, Apr 20, 2020 at 12:22 PM Evgenii Zhuravlev <
> e.zhuravlev.wk@gmail.com> wrote:
>
>> Hi,
>>
>> >How do I do streamer.addData to add the binary objects?
>> If you want to work without classes, you can use binary object builder,
>> just take it for these types:
>>
>> ignite.binary().builder(CustomKey);
>>
>> ignite.binary().builder(Customer);
>>
>> And set fields in it:
>>
>> builder.setField("Client_ID", value);
>>
>> These objects can be used for streaming.
>>
>> However, if you want to use java objects in future, you will need to change keyType and keyType to the full name with a package.
>>
>>
>> Evgenii
>>
>>
>> пн, 20 апр. 2020 г. в 08:53, narges saleh <sn...@gmail.com>:
>>
>>> Hi All,
>>> If I have a query entity defined with composite CustomKey, how do I
>>> insert to the cache,here, Customer, via the DataStreamer, using binary
>>> object builder? Do I need to define an object for the composite CustomKey?
>>> I am trying to define all the tables/caches via the configuration file. How
>>> do I do streamer.addData to add the binary objects?
>>> For example the QE is defined as
>>> <bean class="org.apache.ignite.cache.QueryEntity">
>>> <property name="keyType"
>>> value="CustomKey"/>
>>> <property name="valueType"
>>> value="Customer"/>
>>> <property name="tableName"
>>> value="Customer"/>
>>> ....
>>>
>>> <property name="keyFields">
>>> <set>
>>> <value>Client_ID</value>
>>> <value>Customer_ID</value>
>>> </set>
>>> </property>
>>> thanks.
>>>
>>>
Re: BinaryObject and CustomKey
Posted by narges saleh <sn...@gmail.com>.
Thanks Evgenii. I am still a little bit confused.
So if my CustomKey is composed of Client_ID, Customer_ID, and other fields
are Customer_name, Client_name, then I populate the cache this way? Do I
need to build two binary objects, one for the custom key and another for
the rest of the fields?
IgniteDataStreamer<CustomKey, BinaryObject> streamer =
grid.dataStreamer("Customer");
streamer.keepBinary(true);
BinaryObjectBuilder builder1 = ignite.binary().builder("keys");
BinaryObjectBuilder builder2 = ignite.binary().builder("fields");
BinaryObject b1 = null;
BinaryObject b2 = null;
builder1.setField("Client_ID", 1);
builder1.setField("Customer_ID", 1);
builder2.setField("customer_name", "jim");
builder2.setField("client_name", "joe");
b1 = builder1.build();
b2 = builder2.build;
streamer.adddata(b1, b2);
On Mon, Apr 20, 2020 at 12:22 PM Evgenii Zhuravlev <e....@gmail.com>
wrote:
> Hi,
>
> >How do I do streamer.addData to add the binary objects?
> If you want to work without classes, you can use binary object builder,
> just take it for these types:
>
> ignite.binary().builder(CustomKey);
>
> ignite.binary().builder(Customer);
>
> And set fields in it:
>
> builder.setField("Client_ID", value);
>
> These objects can be used for streaming.
>
> However, if you want to use java objects in future, you will need to change keyType and keyType to the full name with a package.
>
>
> Evgenii
>
>
> пн, 20 апр. 2020 г. в 08:53, narges saleh <sn...@gmail.com>:
>
>> Hi All,
>> If I have a query entity defined with composite CustomKey, how do I
>> insert to the cache,here, Customer, via the DataStreamer, using binary
>> object builder? Do I need to define an object for the composite CustomKey?
>> I am trying to define all the tables/caches via the configuration file. How
>> do I do streamer.addData to add the binary objects?
>> For example the QE is defined as
>> <bean class="org.apache.ignite.cache.QueryEntity">
>> <property name="keyType"
>> value="CustomKey"/>
>> <property name="valueType"
>> value="Customer"/>
>> <property name="tableName"
>> value="Customer"/>
>> ....
>>
>> <property name="keyFields">
>> <set>
>> <value>Client_ID</value>
>> <value>Customer_ID</value>
>> </set>
>> </property>
>> thanks.
>>
>>
Re: BinaryObject and CustomKey
Posted by Evgenii Zhuravlev <e....@gmail.com>.
Hi,
>How do I do streamer.addData to add the binary objects?
If you want to work without classes, you can use binary object builder,
just take it for these types:
ignite.binary().builder(CustomKey);
ignite.binary().builder(Customer);
And set fields in it:
builder.setField("Client_ID", value);
These objects can be used for streaming.
However, if you want to use java objects in future, you will need to
change keyType and keyType to the full name with a package.
Evgenii
пн, 20 апр. 2020 г. в 08:53, narges saleh <sn...@gmail.com>:
> Hi All,
> If I have a query entity defined with composite CustomKey, how do I insert
> to the cache,here, Customer, via the DataStreamer, using binary object
> builder? Do I need to define an object for the composite CustomKey? I am
> trying to define all the tables/caches via the configuration file. How do I
> do streamer.addData to add the binary objects?
> For example the QE is defined as
> <bean class="org.apache.ignite.cache.QueryEntity">
> <property name="keyType"
> value="CustomKey"/>
> <property name="valueType"
> value="Customer"/>
> <property name="tableName"
> value="Customer"/>
> ....
>
> <property name="keyFields">
> <set>
> <value>Client_ID</value>
> <value>Customer_ID</value>
> </set>
> </property>
> thanks.
>
>