私は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);
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;
}
誰が私の問題で私を助けることができる
敬具、
おかげで、私はあなたのSQLの更新を試みるが、その作業はありません。これはエラーメッセージです:ERROR:列 "user_role"はuserrole型ですが、式は可変文字型です。ヒント:式を書き換えたり、キャストしたりする必要があります。 – Michael
@Michaelは更新された答えを見る – Abdelhak