gpt4 book ai didi

java - JOOQ - 将 fetchOne().into() 转换为 fetchValue(query)

转载 作者:行者123 更新时间:2023-11-30 02:04:47 39 4
gpt4 key购买 nike

In this answer ,作者提到为了避免 NPE,可以使用 fetchValue(query) 方法。问题是OP的代码到底如何转换成查询?我有类似的代码,粘贴在下面,并且也想将其转换为查询。

        return jooqDSLContext.select()
.from(CL_LOGIN)
.join(CL_USERS)
.on(CL_LOGIN.CL_USER_ID.eq(CL_USERS.CL_USER_ID))
.where(CL_USERS.EMAIL1.eq(email))
.fetchOne().into(CL_LOGIN);

JOOQ 非常强大并且具有许多功能,但不幸的是我尝试使用联接创建独立查询对象的所有内容甚至都无法编译。

编辑:提供的答案确实帮助我回避了对查询对象的需求。但对于那些想知道如何获取查询对象的人,您可以使用 getQuery() 方法...请参阅下面的示例。

        SelectQuery<Record1<String>> query = jooqDSLContext.select(USER_LOGIN.ACCOUNT_STATUS)
.from(USER_LOGIN)
.where(USER_LOGIN.USER_ID.eq(userId))
.getQuery();

最佳答案

观察方法的签名 DSLContext.fetchValue(ResultQuery<R>) ,其中R extends Record1<T> 。这意味着查询的预期行类型是 Record1<T>任意 <T>类型。换句话说,您必须在 SELECT 中准确投影一列。条款。

您似乎想要投影 CL_LOGIN 类型的整个记录,所以fetchValue()不适用于您的用例。

但请注意,还有 ResultQuery.fetchOneInto(Table) ,这是一个包装 null 检查和 into() 的便捷方法称呼。所以,只需写:

return jooqDSLContext.select()
.from(CL_LOGIN)
.join(CL_USERS)
.on(CL_LOGIN.CL_USER_ID.eq(CL_USERS.CL_USER_ID))
.where(CL_USERS.EMAIL1.eq(email))
.fetchOneInto(CL_LOGIN);

关于java - JOOQ - 将 fetchOne().into() 转换为 fetchValue(query),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51676315/

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