Postgresql 中插入枚举的问题
Problems with insert enumeration in Postgresql
我想在 JAVA 中为我的 OAuth2 应用程序创建一个登录系统。
但首先我必须创建一个帐户并插入到我的数据库中。
这是我的枚举table:
CREATE TYPE userRole AS ENUM ('ADMIN');
这是我的用户 table:
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;
}
结构结果集映射器:
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);
}
我还有一个枚举class:
public enum UserRole {
ADMIN;
}
谁能帮我解决我的问题
亲切的问候,
我认为您的查询中有错字,请更正:
@SqlUpdate("INSERT INTO users(user_email, user_password, user_role) VALUES(:userEmail, :userPassword, :userRole)")
并创建 table 列 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 中为我的 OAuth2 应用程序创建一个登录系统。 但首先我必须创建一个帐户并插入到我的数据库中。
这是我的枚举table:
CREATE TYPE userRole AS ENUM ('ADMIN');
这是我的用户 table:
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;
}
结构结果集映射器:
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);
}
我还有一个枚举class:
public enum UserRole {
ADMIN;
}
谁能帮我解决我的问题
亲切的问候,
我认为您的查询中有错字,请更正:
@SqlUpdate("INSERT INTO users(user_email, user_password, user_role) VALUES(:userEmail, :userPassword, :userRole)")
并创建 table 列 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)
);