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

Reply via email to