0

我只是好奇是否有办法绕过beforeUpdate()某个域类的类似方法。

我需要它来恢复用户的原始密码。beforeUpdate继续我不想调用两次的密码哈希算法。

我能想出的唯一解决方案是使用直接连接到数据库,因此绕过Hibernate. 这我不太喜欢数据库供应商锁定等原因。

感谢您的任何建议。

4

2 回答 2

1

你为什么不在域上放置一个 ishashed 属性......

设置新密码时将其设置为 false

在 beforeUpdate 你测试 ishashed

如果为 false,则对密码进行哈希处理并将 ishashed 设置为 true

于 2013-03-20T17:49:04.377 回答
1

您可以使用 HQL:

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

这仍然使用 Hibernate 及其来自数据源供应商的抽象。

于 2013-03-20T18:09:30.563 回答