используя ReflectiveSchema от Кальцита из скалы - PullRequest
0 голосов
/ 03 сентября 2018

Я экспериментирую с кальцитом из scala и пытаюсь передать простой класс scala для создания схемы во время выполнения (используя ReflectiveSchema), у меня немного болит голова.

Например, повторно реализуя Пример JDBC FoodMart (который хорошо работает в Java), я называю его простым, как new ReflectiveSchema(new Hr()), используя класс Hr, переписанный в scala следующим образом:

class HR {

  val emps: Array[Employee] = Array(new Employee(100, "Bill"))

}

У меня ошибка: ...SqlValidatorException: Object 'emps' not found within 'hr'. Эта проблема, по-видимому, связана с тем фактом, что val поля на самом деле создаются private в байт-коде из Java, и реализация в кальците, кажется, может использовать (посредством отражения Java) только поля, доступные через .getFields() метод класса. Поэтому я полагаю, что это направление требует гораздо большего взлома, чем простой my_field.setAccessible(true) или аналогичный.

Есть ли другой способ построения схемы с помощью API, избегая отражения и использования JSON?

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

...