首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免jOOQ中表别名的引号

问如何避免jOOQ中表别名的引号
EN

Stack Overflow用户
提问于 2015-01-25 16:09:30
回答 1查看 4.2K关注 0票数 7

我有以下选择查询创建:

代码语言:javascript
复制
final DSLContext create = DSL.using(..., SQLDialect.POSTGRES);

create
 .select(DSL.field("identifier"), DSL.field("name"), 
         create.selectCount()
               .from(DSL.table("person"))
               .where(DSL.field("identifier").eq(DSL.field("personOuter.identifier")))
               .asField("count"))
 .from(DSL.table("person").as("personOuter"))

jOOQ生成以下查询:

代码语言:javascript
复制
select 
    identifier, 
    name, 
   (select count(*) 
    from person 
    where identifier = personOuter.identifier) as "count" 
from person as "personOuter"

查询应该是:

代码语言:javascript
复制
select 
    identifier, 
    name, 
   (select count(*) 
    from person 
    where identifier = personOuter.identifier) as "count" 
from person as personOuter

后一个查询在PostgreSQL中工作得很好。表别名不应用引号括起来。

这是个虫子吗?

(请注意,查询非常愚蠢。我正在和jOOQ玩来评估。)

以下“黑客”起作用:

代码语言:javascript
复制
create
 .select(DSL.field("identifier"), DSL.field("name"), 
         create.selectCount()
               .from(DSL.table("person"))
               .where(DSL.field("identifier").eq(DSL.field("personOuter.identifier")))
               .asField("count"))
 .from("person as personOuter")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-26 07:43:48

关于使用代码生成器的说明

我假设您有很好的理由避免使用代码生成器(例如,您处理动态模式),因为使用生成的代码可以避免担心这些细节。此外,您还可以访问许多高级特性,如隐式联接、可嵌入类型等。

jOOQ API中的字符串是什么?

默认情况下,jOOQ将所有标识符封装在引号中,以便正确处理区分大小写的问题。

令人困惑的是,为什么这不是针对DSL.field(String),而是只针对Field.as(String)。造成这种情况的原因是jOOQ对这两种类型都重新使用了字符串类型:

  • 普通SQL和DSL.field(String)一样,输入字符串实际上并不代表标识符,而是一个任意的SQL表达式。
  • 标识符和DSL.name(String)一样,输入字符串表示名称/标识符。还有DSL.fieldByName(String)来创建由(模式)/表/列标识符组成的Field类型。

为了从所有生成的标识符中删除引号,还可以将Settings.renderNameStyle更改为RenderNameStyle.AS_IS。

可以在这里找到。也在这篇关于https://blog.jooq.org/2020/04/03/whats-a-string-in-the-jooq-api/的博文中

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28138434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档