Hi, I need to cache a legacy database having with auto increment key and already containing records. When I try to insert a new record I have this error: Caused by: class org.apache.ignite.IgniteCheckedException: Key is missing from query at org.apache.ignite.internal.processors.query.h2.dml.UpdatePlanBuilder.createSupplier(UpdatePlanBuilder.java:330) at org.apache.ignite.internal.processors.query.h2.dml.UpdatePlanBuilder.planForInsert(UpdatePlanBuilder.java:195) at org.apache.ignite.internal.processors.query.h2.dml.UpdatePlanBuilder.planForStatement(UpdatePlanBuilder.java:81) at org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.getPlanForStatement(DmlStatementsProcessor.java:412) at org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.updateSqlFields(DmlStatementsProcessor.java:140) at org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.updateSqlFieldsTwoStep(DmlStatementsProcessor.java:198) at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.queryTwoStep(IgniteH2Indexing.java:1659)
My legacy table CUSTOMER: id BIGINT NOT NULL AUTO_INCREMENT ,login VARCHAR(50) NOT NULL ,email VARCHAR(100) NOT NULL ,firstname VARCHAR(100) ,lastname VARCHAR(100) ,phone VARCHAR(50) ,age INTEGER ,creation_date TIMESTAMP NOT NULL ,update_date TIMESTAMP NOT NULL ,PRIMARY KEY (id) My ignite client: public static void main(String[] args) { Ignition.setClientMode(true); try (Ignite ignite = Ignition.start("myconf.xml")) { try (IgniteCache<Long, Customer> cache = ignite.getOrCreateCache("customerCache")) { // Load cache with data from the database. System.out.println("@@@@ Load cache customerCache ..."); cache.loadCache(null); // Ecriture de nouveaux Customer Customer customer=new Customer(); for (int index=0;index<10;index++) { customer.setLogin("login"+index); customer.setEmail("login"+index+"@test.com"); customer.setAge(22); System.out.println("@@@@ write "+customer); cache.query(new SqlFieldsQuery("INSERT INTO CUSTOMER (login,email,age) VALUES (?,?,?)") .setArgs( customer.getLogin() ,customer.getEmail() ,customer.getAge() ) ); } } catch (Throwable exception) { exception.printStackTrace(); } } } My ignit conf (myconf.xml): <property name="cacheConfiguration"> <list> <bean class="org.apache.ignite.configuration.CacheConfiguration"> <property name="name" value="customerCache"></property> <!-- Enable readThrough--> <property name="readThrough" value="true"></property> <property name="writeThrough" value="true"></property> <!-- Set cacheStoreFactory--> <property name="cacheStoreFactory"> <bean class="javax.cache.configuration.FactoryBuilder" factory-method="factoryOf"> <constructor-arg value="com.govarch.poc.ignite.CustomerStore"></constructor-arg> </bean> </property> <property name="queryEntities"> <list> <bean class="org.apache.ignite.cache.QueryEntity"> <property name="keyType" value="java.lang.Long"></property> <property name="valueType" value="com.govarch.poc.ignite.Customer"></property> <property name="fields"> <map> <entry key="id" value="java.lang.Long"></entry> <entry key="login" value="java.lang.String"></entry> <entry key="firstname" value="java.lang.String"></entry> <entry key="lastname" value="java.lang.String"></entry> <entry key="phone" value="java.lang.String"></entry> <entry key="email" value="java.lang.String"></entry> <entry key="age" value="java.lang.Integer"></entry> </map> </property> <property name="indexes"> <list> <bean class="org.apache.ignite.cache.QueryIndex"> <constructor-arg value="id"/> </bean> <bean class="org.apache.ignite.cache.QueryIndex"> <constructor-arg value="login"/> </bean> </list> </property> </bean> </list> </property> </bean> </list> </property> How o manage sequence with legacy database having auto increment id ?