Как устранить исключение «Не удалось найти таблицу SQL для типа» в Ignite SqlQuery? - PullRequest
0 голосов
/ 14 апреля 2019

Я получаю исключение "Не удалось найти таблицу SQL для типа" при выполнении запроса SQL в кэше Ignite.Эквивалент ScanQuery успешно выполняется в том же кэше.

nb - обратите внимание, что из моего кода я создаю кэш после запуска Ignite.Это намеренно, поскольку я хочу иметь возможность динамически создавать кэши.

Класс сотрудника:


public class Employee implements Serializable {

    @QuerySqlField (index = true)
    private final Integer empNo;
    @QuerySqlField
    private String name;
    @QuerySqlField
    private Department dept;
    @QuerySqlField
    private Integer salary;

Создать и заполнить кэш сотрудника:

    CacheConfiguration<Integer, Employee> empCacheCfg = new CacheConfiguration<>();
    empCacheCfg.setName("Employee");
    IgniteCache<Integer, Employee> empCache = ignite.getOrCreateCache(empCacheCfg);

    empCache.put(0, new Employee(0, "Bill", deptCache.get("POT"), 20000));
    empCache.put(1, new Employee(1, "Ben", deptCache.get("POT"), 21000));
    empCache.put(2, new Employee(2, "Little Weed", deptCache.get("PLANT"), 15000));
    empCache.put(3, new Employee(3, "The Gardner", deptCache.get("SVC"), 30000));

SQLQuery overКэш сотрудника:

    SqlQuery sql = new SqlQuery("Employee", "salary > ?");

    try (QueryCursor<Cache.Entry<Integer, Employee>> cursor2 = 
                    empCache.query(sql.setArgs(20000)))
    {
        for(var e2 : cursor2)
        {
             System.out.println(String.format("Employee: %s", e2.getValue().getName()));                   
        }
    }
    catch(Exception e)
    {
        String exmsg = e.getMessage();
        System.out.println(exmsg);
    }

1 Ответ

2 голосов
/ 14 апреля 2019

Вы не указали объекты запроса в конфигурации кеша.Их можно настроить с помощью свойства CacheConfiguration # indexedTypes .

Следующая строка должна исправить ваш пример:

empCacheCfg.setIndexedTypes(Integer.class, Employee.class);

Документация: https://apacheignite.readme.io/docs/cache-queries#section-query-configuration-by-annotations

...