jOOQ 中的隐式连接和 N:N 表
Implicit joins and N:N tables in jOOQ
在当前的 jOOQ 版本中,有一个隐式连接 tables 的功能。
它允许 'navigate' 使用在 table 上定义的外键约束。
它也适用于 n:n
table 吗?例如,如果我有 DOCUMENT
和 CLIENT
,以及它们之间的 n:n
table CLIENT_DOCUMENT
,我将如何转换以下查询以使用新语法?
db.select(*DOCUMENT.fields())
.from(DOCUMENT)
.join(CLIENT_DOCUMENT).onKey()
.join(CLIENT).onKey()
.where(CLIENT.CLIENT_NAME.eq(name))
.fetchInto(Document::class.java)
谢谢。
implicit join feature, as of jOOQ 3.13, only works for to-one relationships, not for to-many relationships. There are a variety of planned improvements for future versions: #7536.
但是,m:n
关系可以看作是从关系 table 开始的两个一对一关系。你可以这样写:
db.select(CLIENT_DOCUMENT.document().fields())
.from(CLIENT_DOCUMENT)
.where(CLIENT_DOCUMENT.client().CLIENT_NAME.eq(name))
.fetchInto(Document::class.java)
在当前的 jOOQ 版本中,有一个隐式连接 tables 的功能。
它允许 'navigate' 使用在 table 上定义的外键约束。
它也适用于 n:n
table 吗?例如,如果我有 DOCUMENT
和 CLIENT
,以及它们之间的 n:n
table CLIENT_DOCUMENT
,我将如何转换以下查询以使用新语法?
db.select(*DOCUMENT.fields())
.from(DOCUMENT)
.join(CLIENT_DOCUMENT).onKey()
.join(CLIENT).onKey()
.where(CLIENT.CLIENT_NAME.eq(name))
.fetchInto(Document::class.java)
谢谢。
implicit join feature, as of jOOQ 3.13, only works for to-one relationships, not for to-many relationships. There are a variety of planned improvements for future versions: #7536.
但是,m:n
关系可以看作是从关系 table 开始的两个一对一关系。你可以这样写:
db.select(CLIENT_DOCUMENT.document().fields())
.from(CLIENT_DOCUMENT)
.where(CLIENT_DOCUMENT.client().CLIENT_NAME.eq(name))
.fetchInto(Document::class.java)