将 UNNEST 与 jOOQ 一起使用
Posted
技术标签:
【中文标题】将 UNNEST 与 jOOQ 一起使用【英文标题】:Using UNNEST with jOOQ 【发布时间】:2016-06-03 23:11:55 【问题描述】:我正在使用 PostgreSQL 9.4、Spring Boot 1.3.2 和 jOOQ 3.7。我想“jOOQify”以下查询
SELECT id FROM users WHERE username IN (SELECT * FROM UNNEST(?))
这样我就可以使用 Spring 的 JdbcTemplate
通过传递一个列表或数组(在本例中为 List<String>
)来运行它。我试过了
DSLContext.select(
USERS.ID
)
.from(
USERS
)
.where(
USERS.USERNAME.in(...)
)
但我不知道在...
中放置什么。我尝试了类似的东西
DSLContext.select(field("*")).from(unnest(myList))
但不幸的是编译器不喜欢这样。有什么简单的方法可以实现吗?
【问题讨论】:
你能传递一个数组吗?where username = ANY ( array )
会工作
【参考方案1】:
编译器不喜欢你的尝试,因为USERS.USERNAME
是Field<String>
,因此in()
方法需要Select<? extends Record1<String>>
。
你可以这样修复它:
select(field("*", String.class)).from(unnest(myList))
或者,也许更好一点:
select(field(name("v"), String.class)).from(unnest(myList).as("t", "v"))
【讨论】:
以上是关于将 UNNEST 与 jOOQ 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
将 JooQ 与 SQL Server 一起使用,getTables() 方法返回服务器上所有数据库中的所有表