我正在尝试使用 scala 的方解石,并尝试传递一个简单的 scala 类以在运行时创建模式(使用ReflectiveSchema
),我有些头疼。
例如,重新实现FoodMart JDBC 示例(在 Java 中运行良好),我将其称为简单new ReflectiveSchema(new Hr())
,使用Hr
在 scala 中重写的类:
人力资源类{ val emps: Array[Employee] = Array(new Employee(100, "Bill")) }
我遇到一个错误:...SqlValidatorException: Object 'emps' not found within 'hr'
。这个问题似乎与val
字段实际上是private
在 java 的字节码中创建的事实有关,而 calcite 中的实现似乎只能使用(通过 java 反射)通过.getFields()
类的方法访问的字段。my_field.setAccessible(true)
所以我想这个方向比简单或类似的方向需要更多的黑客攻击。
有没有其他方法可以通过 API 构造模式,避免反射和 JSON 的使用?
提前感谢您的任何建议