将UNNEST与jOOQ一起使用

时间:2016-02-22 13:37:14

标签: postgresql spring-boot spring-data jooq postgresql-9.4

我使用PostgreSQL 9.4,Spring Boot 1.3.2和jOOQ 3.7。我想" jOOQify"以下查询

SELECT id FROM users WHERE username IN (SELECT * FROM UNNEST(?))

这样我就可以通过传递列表或数组(在这种特殊情况下为JdbcTemplate)来运行Spring List<String>。我试过了

DSLContext.select(
    USERS.ID
)
.from(
    USERS
)
.where(
    USERS.USERNAME.in(...)
)

但我无法弄明白...中的内容。我试过像

这样的东西
DSLContext.select(field("*")).from(unnest(myList))

但遗憾的是编译器并不喜欢这样。有什么简单的方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:2)

编译器不喜欢您的尝试,因为USERS.USERNAMEField<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"))