Java 无法在JOOQ中设置引号样式(RenderNameStyle.QUOTED)

Java 无法在JOOQ中设置引号样式(RenderNameStyle.QUOTED),java,jooq,Java,Jooq,我想让JOOQ用引号呈现列名。这就是我尝试的,阅读文档和StackOverflow: DSLContext sql = DSL.using( SQLDialect.SQL99, new Settings() .withRenderNameStyle(RenderNameStyle.QUOTED) .withRenderFormatted(true) .withRend

我想让JOOQ用引号呈现列名。这就是我尝试的,阅读文档和StackOverflow:

    DSLContext sql = DSL.using( SQLDialect.SQL99, 
            new Settings()
                .withRenderNameStyle(RenderNameStyle.QUOTED)
                .withRenderFormatted(true)
                .withRenderKeywordStyle(RenderKeywordStyle.UPPER)
        );

    System.out.println( "Quoted: " + (sql.settings().getRenderNameStyle()==RenderNameStyle.QUOTED) );

    Table<Record> table = table("MyTable");
    Field<Long> lid = field("id",Long.class);

    String sqlStr = sql.renderInlined(
            sql.select( lid, field("type"), field("request.id"), field("UPPERCASE"), field("lowercase") )
            .from(table)
            .limit(1000) 
        );

    System.out.println(sqlStr);
它输出
Quoted:true
,因此该标志似乎已设置。 虽然
renderFormatted
renderKeywordStyle
似乎受到尊重,但“renderNameStyle”似乎被忽略

我正在试验一个不受支持的数据库,因此是SQL99。 附带问题:为什么在JOOQ中不推荐使用SQL99?

这些方法用于将“普通SQL”嵌入到JOOQ中。jOOQ不会解析您的SQL字符串,因此不知道您认为哪些部分是“名称”,例如
type
,或
request
id

如果不想使用代码生成器,则应使用创建名称受
RenderNameStyle
设置影响的字段<可以使用创建代码>名称

我正在试验一个不受支持的数据库,因此是SQL99。附带问题:为什么在JOOQ中不推荐使用SQL99


因为这个名字有误导性。jOOQ并没有真正生成SQL99,因为根据标准,没有集成测试验证输出是否正确或有意义。在jOOQ的未来版本中,
SQL99
将被
默认的
方言所取代,这可能对任何数据库都不起作用。

“我正在试验一个不受支持的数据库”-那是什么数据库?也许我们可以帮助…DB是SAP HANA-感谢您的帮助!我曾希望会有一个“默认SQL”配置文件,它只是试图坚持标准,作为不受支持的DBs的后备方案,但我没有看到。有趣的是。我们(数据奇客)实际上一直在与SAP讨论这种集成,这将是jOOQ 3.6的一个高度优先事项。。。在你这边增加支持是可行的,但可能非常乏味。jOOQ已经变得相当大,我们的
SELECT
语句支持也变得越来越复杂。事实上,我也遇到了同样的问题,并使用fieldByName()解决了它。但是,fieldByName()现在被标记为已弃用。这个用例我们应该使用什么?@Pierre:谢谢你的提示。我已经更新了我的答案
SELECT 
   id, 
   type, 
   request.id, 
   UPPERCASE, 
   lowercase
FROM MyTable
LIMIT 1000