Используя ReflectiveSchema от Кальцита из скалы
Я экспериментирую с кальцитом из scala и пытаюсь передать простой класс scala для создания схемы во время выполнения (используя ReflectiveSchema
) У меня болит голова.
Например, повторно реализуя Пример FoodMart JDBC (который хорошо работает в Java), я называю это так же просто, как new ReflectiveSchema(new Hr())
, используя Hr
класс переписан в scala как:
класс HR { val emps: Array [Employee] = Array (новый сотрудник (100, "Билл")) }
Я испытываю ошибку: ...SqlValidatorException: Object 'emps' not found within 'hr'
, Эта проблема, похоже, связана с тем, что val
поля на самом деле созданы private
в байт-код из Java, и реализация в Calcite, кажется, в состоянии использовать (с помощью Java-отражения) только поля, доступные через .getFields()
метод класса. Так что я полагаю, что это направление требует гораздо большего взлома, чем простое my_field.setAccessible(true)
или похожие.
Есть ли другой способ построить схему с помощью API, избегая отражения и использования JSON?
заранее спасибо за любые предложения