gpt4 book ai didi

java - 链接生成的 Jooq 类时如何解决歧义匹配

转载 作者:行者123 更新时间:2023-11-29 13:40:38 25 4
gpt4 key购买 nike

我已经在 J​​PA 中定义了我的模型并正在为我的应用程序编写一些查询,我正在使用 JOOQ 生成的类将所有表连接在一起以检查请求的资源是否确实属于请求用户。

但是,当我这样做时,我收到以下警告:

Ambiguous match found for ID. Both "alias_4548634"."ID" and "alias_47496750"."ID" match.

java.sql.SQLWarning: null
at org.jooq.impl.Fields.field(Fields.java:132) ~[jooq-3.11.10.jar:?]
... etc

这是我的代码

db.select(countField)
.from(thing)
.where(JThing.THING.thingBucket().bucket().organization().customer().ID.in(idList))
.orderBy(countField)

这是它生成的SQL

SELECT 
count(PUBLIC.THING.ID) AS count
FROM (
PUBLIC.THING
LEFT OUTER JOIN (
PUBLIC.THING_BUCKET AS alias_72652126
LEFT OUTER JOIN (
PUBLIC.BUCKET AS alias_4548634
LEFT OUTER JOIN (
PUBLIC.ORGANISATION AS alias_43016761
LEFT OUTER JOIN PUBLIC.CUSTOMER AS alias_47496750
ON alias_43016761.CUSTOMER_ID = alias_47496750.ID
)
ON alias_4548634.ORGANISATION_ID = alias_43016761.ID
)
ON alias_72652126.ID = alias_4548634.ID
)
ON PUBLIC.THING.THING_BUCKET_ID = alias_72652126.ID
)
WHERE alias_47496750.ID IN (81353)
ORDER BY count

鉴于 JOOQ 正在生成 SQL,我希望它能够理解它而不会引发错误。我错过了什么?我该如何配置/查询/解决 SQLWarning 问题?

更新

经过反复试验,我确定了问题的根源。

THING_BUCKET 是 BUCKET 的子类型,因此 THING_BUCKET.ID = BUCKET.ID

如果我将查询重写为我得到相同的结果,但没有错误

SELECT 
count(PUBLIC.THING.ID) AS count
FROM (
PUBLIC.THING
LEFT OUTER JOIN (
PUBLIC.BUCKET AS alias_4548634
LEFT OUTER JOIN (
PUBLIC.ORGANISATION AS alias_43016761
LEFT OUTER JOIN PUBLIC.CUSTOMER AS alias_47496750
ON alias_43016761.CUSTOMER_ID = alias_47496750.ID
)
ON alias_4548634.ORGANISATION_ID = alias_43016761.ID
)
ON PUBLIC.THING.BUCKET_ID = alias_4548634.ID
)
WHERE alias_47496750.ID IN (81353)
ORDER BY count

所以我想做的就是去

db.select(countField)
.from(thing)
.where(JThing.THING.bucket().organization().customer().ID.in(idList))
.orderBy(countField)

并将我的 THING 直接加入 BUCKET 而不是 THING_BUCKET,但我不知道如何使用生成的类完成此操作。

最佳答案

这看起来像是一个已在 jOOQ 3.14 中修复的错误,请参阅 #8659 , #10603

关于java - 链接生成的 Jooq 类时如何解决歧义匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55875983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com