2016-04-22 81 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