Here is a ticket: https://issues.apache.org/jira/browse/IGNITE-5211
Vovan, can it be done in 2.1? — Denis > On May 11, 2017, at 4:14 PM, Denis Magda <[email protected]> wrote: > > Guys, > > Let’s suppose there is a cache that stores entries like that: > > * key - int > * value - custom object which fields are annotated by @QuerySqlField > > Before 2.0 if I wanted to refer to the key in an SQL query I had to use > “_key” keyword. In 2.0 this is no longer the requirement. Any name can be > used in the condition it’s set via QueryEntity.setKeyFieldName(keyName). > > This concept works perfectly fine if both key's and value's types are > configured using QueryEntities directly. But what can I do if the value is > annotated with @QuerySqlField as in the example above and passed to SQL > engine via CacheConfiguration.setIndexedTypes(…) method? How can I set > QueryEntity.setKeyFieldName()? > > Looks like the only workable way is this one: > - register key and value types via CacheConfiguration.setIndexedTypes(…) > - find the QueryEntity corresponding to the just registered types in a > collection of CacheConfiguration.getQueryEntities() > - call QueryEntity.setKeyFieldName(keyName) for the entity of interest. > > Basically, this is a workaround but not a user friendly approach. Is there > any other way to achieve this? > > In the meanwhile, what if we add QueryEntity(Class keyType, Class valueType) > that will do totally the same things that > CacheConfiguration.setIndexedTypes(…) with the only difference that right > after that the user will be able to call QueryEntity.setKeyFieldName(keyName)? > > — > Denis >
