2016-04-22 77 views
0

我想将我在数据库中的字段解密为字符串,并且我想在春天将其传递到控制器中。我有一个休眠类是这样的:如何在休眠时解密密码

@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 

我的问题是正确的,但我得到一个错误。如何解决它?

+2

这样的逻辑不应该在数据库层上处理我认为...创建一个服务/道,可以照顾解密密码编程。 –

回答

0

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