Select 作为布尔值使用 PostgreSQL 'crypt()' 函数
Select as boolean using PostgreSQL 'crypt()' function
我正在尝试使用 jOOQ 复制以下 SQL 查询,但我 运行 遇到了一些错误。我想看看是否可以直接替换,如果需要的话,在重新处理查询之前,所以只是在寻找一些建议。
SELECT
user_password_hash = crypt(?, user_password_hash) AS is_password_match
roles
FROM system_users
WHERE user_name = ?;
我尝试了以下 jOOQ 替代品,尽管它有编译错误:
DSL.using(connection, SQLDialect.POSTGRES)
.select(SYSTEM_USERS.USER_PASSWORD_HASH.equal(crypt(password, SYSTEM_USERS.USER_PASSWORD_HASH.getName())), SYSTEM_USERS.ROLES)
.from(SYSTEM_USERS)
.where(SYSTEM_USERS.USER_NAME.equal(userName));
我认为问题是 #select() 调用的第一部分被解析为条件,而不是字段。但我不确定如何最好地使用 #equal() 调用使其成为一个字段。
有没有人有什么想法?
使用DSL.field(Condition)
将Condition
变成Field<Boolean>
我正在尝试使用 jOOQ 复制以下 SQL 查询,但我 运行 遇到了一些错误。我想看看是否可以直接替换,如果需要的话,在重新处理查询之前,所以只是在寻找一些建议。
SELECT
user_password_hash = crypt(?, user_password_hash) AS is_password_match
roles
FROM system_users
WHERE user_name = ?;
我尝试了以下 jOOQ 替代品,尽管它有编译错误:
DSL.using(connection, SQLDialect.POSTGRES)
.select(SYSTEM_USERS.USER_PASSWORD_HASH.equal(crypt(password, SYSTEM_USERS.USER_PASSWORD_HASH.getName())), SYSTEM_USERS.ROLES)
.from(SYSTEM_USERS)
.where(SYSTEM_USERS.USER_NAME.equal(userName));
我认为问题是 #select() 调用的第一部分被解析为条件,而不是字段。但我不确定如何最好地使用 #equal() 调用使其成为一个字段。
有没有人有什么想法?
使用DSL.field(Condition)
将Condition
变成Field<Boolean>