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字符串;我没有为我的表类型使用它的代码生成。
答案 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());
}