Java jOOQ从结果中获取表名<;R>;

Java jOOQ从结果中获取表名<;R>;,java,mysql,jooq,Java,Mysql,Jooq,我试图从jOOQ结果中检索底层MySQL表名 以下是我作为助手函数的最佳尝试: private <R extends Record> String tableNameOf(Result<R> result) { return result.recordType().toString(); } private String tableNameOf(结果){ 返回result.recordType().toString(); } 这将返回“数据库”、“表名”、“第一列

我试图从jOOQ结果中检索底层MySQL表名

以下是我作为助手函数的最佳尝试:

private <R extends Record> String tableNameOf(Result<R> result) {
  return result.recordType().toString();
}
private String tableNameOf(结果){
返回result.recordType().toString();
}
这将返回
“数据库”、“表名”、“第一列名”

这纯粹是为了生成一条错误消息,所以现在我只是用一个正则表达式抓取它

但我很好奇,我没能找到一个合适的方法来获得它。

结果
不知道
表格
首先,请注意,
结果
原则上不知道
Result
只是由任意
Select
语句生成的一组列/记录。它可能只包括像
A+B
1
NULL
这样的表达式,这些表达式不链接到任何物理表

如果您知道从物理表生成了
结果
当然,您可能知道给定的
结果是从物理表生成的,例如通过使用。在这种情况下,您的泛型
R
类型不应该绑定到,而应该绑定到

一种可能的实施方式是:

private <R extends TableRecord<R>> String tableNameOf(Result<R> result) {
    return ((TableRecord<?, ?>) result.field(0)).getTable();
}
private String tableNameOf(结果){
返回((TableRecord)result.field(0)).getTable();
}

是的,这正是我的场景,事实证明,在我的代码库中有多个实例,我有一个完全不可能的期望:从自定义(“非表记录”)查询的结果中检索表名。这强化了我如此喜欢jOOQ的原因:它明确了什么是错误试验留下的。