1

我正在尝试使用 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 的使用?

提前感谢您的任何建议

4

0 回答 0