【问题标题】:How can I get fields from a non-generated, aliased table?如何从非生成的别名表中获取字段?
【发布时间】:2017-08-25 17:27:03
【问题描述】:
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 字符串;我没有为我的表类型使用它的代码生成。

【问题讨论】:

    标签: java sql jooq


    【解决方案1】:

    我刚刚在文档中看到了this comment:

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

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

    我认为手册的这一部分可能对你很有帮助:http://www.jooq.org/doc/latest/manual/sql-building/names

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 2011-04-12
      • 1970-01-01
      相关资源
      最近更新 更多