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.

我想将盐和密码保存在数据库中的 byte[] 中。

我错过了什么吗?

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 回答