Используя 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?

заранее спасибо за любые предложения

0 ответов

Другие вопросы по тегам