有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在hibernate上解密密码

我想将数据库中的字段解密为字符串,并将其传递给spring上的控制器。我有一个如下的hibernate类:

@Id
@Column(name = "USER_ID")

private BigDecimal userId;

@Column(name = "user_name")
private String username;

@Column(name = "EMPLOYEE_ID")
private BigDecimal employeeId;

@Column(name = "encrypted_user_password")
@ColumnTransformer( write="EncryptByPassPhrase('BN1HC1T',?)", read="decrypt ('BN1HC1T',pswd)" )
private String encrypted_user_password;

public BigDecimal getUserId() {
    return userId;
}

public void setUserId(BigDecimal userId) {
    this.userId = userId;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public BigDecimal getEmployeeId() {
    return employeeId;
}

public void setEmployeeId(BigDecimal employeeId) {
    this.employeeId = employeeId;
}

public String getEncrypted_user_password() {
    return encrypted_user_password;
}

public void setEncrypted_user_password(String encrypted_user_password) {
    this.encrypted_user_password = encrypted_user_password;
}

查询结果为:

select
    karyawan0_.USER_ID as USER_ID1_0_,
    karyawan0_.EMPLOYEE_ID as EMPLOYEE_ID2_0_,
    decrypt('BN1HC1T',
    karyawan0_.encrypted_user_password) as encrypted_user_pas3_0_,
    karyawan0_.user_name as user_name4_0_ 
from
    FND_USER karyawan0_ 
where
    karyawan0_.user_name=?

我得到这样一个错误:

java.sql.SQLSyntaxErrorException: ORA-00904: "DECRYPT": invalid identifier

我的问题是对的,但我犯了一个错误。如何修复它


共 (1) 个答案

  1. # 1 楼答案

    返回错误ORA-00904,因为对象(在本例中为函数decrypt(?,?))不存在,或者DB帐户没有访问该对象的适当权限