0

私のユーザー認証テーブル「AuthUser」は次のようになります。

  id bigint NOT NULL,
  username character varying(255) NOT NULL,
  password bytea[],
  salt bytea[]

POJO 表現:

  ...
  private byte[]            password;

  private byte[]            salt;
  ... 
  getter setter methods

次のクエリを使用して、ソルトと暗号化されたパスワードを次のように更新しました。

@Transactional(readOnly = false)
  public void updateSaltAndPasswordByUsername(String username, byte[] salt, byte[] password) {
    String hql = "UPDATE AuthUser SET password= ? , salt= ? WHERE username = ? ";
    sessionFactory.getCurrentSession().createQuery(hql).setBinary(0, password).setBinary(1, salt).setString(2, username).executeUpdate();
  }

しかし、それは次のようにエラーを出します:

org.postgresql.util.PSQLException: ERROR: column "password" is of type bytea[] but expression is of type bytea
  Hint: You will need to rewrite or cast the expression.

データベースのバイト[]にソルトとパスワードを保存したい。

私は何かを見逃していますか?

4

1 に答える 1

0

試してみてください

  id bigint NOT NULL,
  username character varying(255) NOT NULL,
  password bytea,
  salt bytea

タイプのデータが期待bytea[]されることに注意してくださいbytea ARRAY{byte[], byte[],...}

于 2013-05-29T12:22:08.913 に答える