0
我想用OAuth2爲我的應用程序在JAVA中創建一個登錄系統。 但首先我必須創建一個帳戶並插入到我的數據庫中。在Postgresql中插入枚舉的問題
這是我的枚舉表:
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);
此應用程序使用dropwizard連同DBI數據庫連接。 當我運行我的代碼和執行我的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;
}
任何人可以幫助我與我的問題
親切的問候,
感謝您的回覆,我試試你的SQL更新,但它不工作。這是錯誤消息:錯誤:列「user_role」的類型是userrole,但表達式的類型是字符變化的。提示:您將需要重寫或轉換表達式。 – Michael
@Michael查看更新後的答案 – Abdelhak