【问题标题】:How can I project all database columns of a fast changing database?如何投影快速变化的数据库的所有数据库列?
【发布时间】:2020-08-22 20:05:05
【问题描述】:

我经常遇到生成的jooq代码与生产中的数据库不匹配的情况(一直在添加列)。

如何获取包含所有数据库列的弱类型记录?

dsl.select(asterisk())
   .from(PERSON)
   .where(PERSON.PERSON_NO.eq(id))
   .fetch()

仅返回在代码生成时已知的列。

【问题讨论】:

    标签: java sql jooq


    【解决方案1】:

    快速破解方法是通过在 from 子句中使用 plain SQL templating 来确保 jOOQ 不知道您的表。这样,jOOQ 无法解析星号,并会尝试从实际查询结果中发现投影。例如:

    dsl.select(asterisk())
       .from("{0}", PERSON)
       .where(PERSON.PERSON_NO.eq(id))
       .fetch();
    

    这是一个重复出现的请求,我想我们可以把它变成一个特性:https://github.com/jOOQ/jOOQ/issues/10182

    但请注意,通常最好确保 jOOQ知道确切的生产模式并保持生成的代码是最新的。未来的 jOOQ 将支持版本化生成的元数据,以便相同的代码可以更轻松地使用不同的生产模式版本: https://github.com/jOOQ/jOOQ/issues/4232

    【讨论】:

      【解决方案2】:

      只需使用普通 SQL:https://www.jooq.org/doc/3.14/manual-single-page/#query-vs-resultquery

      如果这对您不起作用,解释为什么不可以帮助某人制定更合适的答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-15
        • 1970-01-01
        • 2012-03-12
        • 2020-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多