2013-03-20 76 views
0

我只是好奇,如果有一種方法可以繞過beforeUpdate()和某個域類的類似方法。Grails繞過域類的更新方法

我需要它來恢復用戶的原始密碼。 beforeUpdate執行我不想調用兩次的密碼散列算法。

我能想出的唯一解決方案是使用直接連接到數據庫,因此繞過Hibernate。這我不喜歡數據庫供應商鎖定等很多原因。

感謝您的任何建議。

回答

1

你爲什麼不把ishashed財產上的域....

你把它誤當你設置新密碼

在您的測試ishashed

如果更新前假你哈希ishashed真

+0

我之前正在考慮這個解決方案,但發現了一些問題。但實際上沒有 - 非常直接的解決方案。謝謝! – kuceram 2013-03-21 09:08:41

1

您可以使用HQL密碼和設置:

User.executeUpdate("update User u set u.password = :password where u.id = :userId", 
    [password: oldHashedPassword, userId: userId]) 

這仍然使用Hibernate及其數據源供應商的抽象。