如何从非生成的别名表中获取字段?

时间:2017-08-25 17:27:04

标签: java sql jooq

Table<Record> myTable = DSL.table("myTable");
Table<Record> a = myTable.as("a");
Field<Integer> myField = DSL.field("myField", SQLDataType.INTEGER);

a.field("myField"); // == null
a.field("myField", SQLDataType.INTEGER); // == null
a.field(myField); // == null

我想在比较中使用表表达式,类似于this。我正在使用jOOQ来生成SQL字符串;我没有为我的表类型使用它的代码生成。

1 个答案:

答案 0 :(得分:1)

我刚刚在文档中看到了tutorial

  

更好的解决方案是以下任何一种:

Field MY_FIELD1 = field(MY_TABLE.getName() + ".MY_FIELD");
Field MY_FIELD2 = field(name(MY_TABLE.getName(), "MY_FIELD"));
     

我认为本手册的这一部分可能对您有所帮助:this comment

这对我有用,但我需要做一些更改,因为我使用了类型安全字段。我写了这个帮手:

private <T> Field<T> field(final Table<Record> table, final Field<T> field) {
    return DSL.field(DSL.name(table.getName(), field.getName()), field.getDataType());
}