Hi, There is no need to create Query Entity if you already have annotations. YOu can add CacheConfiguration.setIndexedTypes(PersonKey.class, Person.class) and it will be generated automatically based on you annotations.
Evgenii пн, 13 апр. 2020 г. в 09:11, Anthony <[email protected]>: > Hello, > If I have the following java class: > > public class Person implements Serializable { > /** */ > private static final AtomicLong ID_GEN = new AtomicLong(); > > /** Person ID (indexed). */ > @QuerySqlField(index = true) > public Long id; > > /** Organization ID (indexed). */ > @QuerySqlField(index = true) > public Long orgId; > > /** First name (not-indexed). */ > @QuerySqlField > public String firstName; > > /** Last name (not indexed). */ > @QuerySqlField > public String lastName; > > /** Resume text (create LUCENE-based TEXT index for this field). */ > @QueryTextField > public String resume; > > /** Salary (indexed). */ > @QuerySqlField(index = true) > public double salary; > > /** Custom cache key to guarantee that person is always collocated > with its organization. */ > private transient AffinityKey<Long> key; > > > And I want to create a table, I need to write the following code in > java or put them in the config file. Is it possible to generate them > automatically? As Java reflection seems can handle this? > > CacheConfiguration cacheCfg = new CacheConfiguration("Person"); > QueryEntity entity = new QueryEntity(); > entity.setKeyType("java.lang.Long"); > entity.setValueType("Person"); > LinkedHashMap<String,String> map = new LinkedHashMap<String, String>(); > map.put("orgId", "java.lang.Long"); > map.put("firstName", "java.lang.String"); > map.put("lastName", "java.lang.String"); > map.put("Resume", "java.lang.String"); > map.put("Salary", "java.lang.double"); > entity.setFields(map); > entity.setIndexes(Collections.singletonList(new QueryIndex("orgId"))); > List<QueryEntity> queryEntities = new ArrayList<>(); > queryEntities.add(entity); > cacheCfg.setQueryEntities(queryEntities); > igniteConfiguration.setCacheConfiguration(cacheCfg); > Ignite ignite = Ignition.start(igniteConfiguration); > IgniteCache cache = ignite.getOrCreateCache("Person"); > >
