2016-04-22 9 views
0

Ich möchte mein Feld in der Datenbank in eine Zeichenfolge entschlüsseln, und ich möchte es im Frühjahr auf Controller übergeben. Ich habe eine Hibernate-Klasse wie folgt:Wie entschlüsseln Passwort bei 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; 
} 

Und das Ergebnis der Abfrage ist:

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=? 

Und ich erhalte eine Fehlermeldung wie folgt aus:

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

Meine Frage ist richtig, aber ich Erhalte einen Fehler. Wie man es repariert?

+2

Eine solche Logik sollte meiner Meinung nach nicht auf der DB-Ebene behandelt werden ... Erstellen Sie einen Dienst/dao, der das Entschlüsseln des Kennworts programmgesteuert übernehmen kann. –

Antwort

0

Der Fehler ORA-00904 wird zurückgegeben, da das Objekt (Funktion decrypt(?,?) in diesem Fall) nicht vorhanden ist oder das DB-Konto nicht über die erforderlichen Berechtigungen für den Zugriff verfügt.