gpt4 book ai didi

java - Postgresql 中插入枚举的问题

转载 作者:行者123 更新时间:2023-12-01 10:00:56 25 4
gpt4 key购买 nike

我想用 JAVA 为我的 OAuth2 应用程序制作一个登录系统。但首先我必须创建一个帐户并将其插入到我的数据库中。

这是我的枚举表:

CREATE TYPE userRole AS ENUM ('ADMIN');

这是我的用户表:

CREATE TABLE "users"
(
user_id SERIAL PRIMARY KEY NOT NULL,
user_email VARCHAR(255) NOT NULL,
user_password VARCHAR(255) NOT NULL,
user_role userRole
);
CREATE UNIQUE INDEX user_user_email_uindex ON "user" (user_email);

此应用程序使用带有 dbi 数据库连接的 dropwizard。当我运行代码并执行 SQL 查询时,应用程序抛出 500 错误并显示以下消息:

The column index is out of range: 3, number of columns: 2.

Exception while binding 'userRole'

这是我的模型(用户)的结构:

@JsonCreator
public User(@JsonProperty("userEmail") String userEmail, @JsonProperty("userPassword") String userPassword, @JsonProperty("userRole") UserRole userRole) {
this.userEmail = userEmail;
this.userPassword = userPassword;
this.userRole = userRole;
}

结构ResultSetMapper:

public class UserMapper implements ResultSetMapper<User>{

@Override
public User map(int i, ResultSet rs, StatementContext sc) throws SQLException {
return new User(rs.getLong("user_id"), rs.getString("user_email"), rs.getString("user_password"), UserRole.ADMIN);
}
}

结构:UserDAO

@RegisterMapper(UserMapper.class)
public interface UserDAO {

@SqlUpdate("INSERT INTO users(user_email, user_password, user_role) VALUES(:userEmail, :userPassword, :userRole::userRole)")
void create(@BindBean User user);
}

我还有一个枚举类:

public enum UserRole {
ADMIN;

}

谁能帮我解决我的问题

亲切的问候,

最佳答案

我认为您的查询中存在拼写错误,请按如下方式更正:

  @SqlUpdate("INSERT INTO users(user_email, user_password, user_role) VALUES(:userEmail, :userPassword, :userRole)")

并创建包含 user_role 类型为 VARCHAR(255) 的表,如下所示:

   CREATE TABLE "users"
(
user_id SERIAL PRIMARY KEY NOT NULL,
user_email VARCHAR(255) NOT NULL,
user_password VARCHAR(255) NOT NULL,
user_role VARCHAR(255)
);

关于java - Postgresql 中插入枚举的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36813264/

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