0

JSON用来从 db 获取数据,我的数据看起来像这样我已经在 db 中保存了 JSON 对象,所以在 DB 数据中是这样的

{"column":"\"someString\".\"Folder\".\"FolderCentury\"","ascending":true}

我写了下面的代码来获取数据,因为它的JSON对象

    JSONObject jsonObj = geodata.getJSONObject(i);
    TableField<Record, T> columnName = (TableField<Record, T>) jsonObj.get("column");

但这里有问题

 jsonObj.get("column");

这一行返回一个类似这样的字符串

 (java.lang.String) "someString"."Folder"."FolderCentury"

但是当我在做它的抛出异常时

java.lang.ClassCastException: java.lang.String cannot be cast to org.jooq.TableField

我想知道如何更改StringTableField对象?表字段接口

4

1 回答 1

1

您可能认为 JVM 会“神奇地”知道您将 jOOQ 编码为TableFieldJSON 字符串文字意味着逆向同样是自动的。显然,情况并非如此,您将不得不自己做一些工作。

TableField我能看到的最简单的方法是在您的编码和实际实例之间保留一个查找图。

Map<String, TableField<?>> lookup = new HashMap<>();

// SOME_STRING is the generated schema instance
for (Table<?> table : SOME_STRING.getTables()) {
    for (Field<?> field : table.fields()) {

        // Replace "toString()" by an actual SQL rendering call, if you prefer
        lookup.put(field.toString(), (TableField<?>) field);
    }
}
于 2013-08-28T08:21:14.113 回答