我只是好奇是否有办法绕过beforeUpdate()
某个域类的类似方法。
我需要它来恢复用户的原始密码。beforeUpdate
继续我不想调用两次的密码哈希算法。
我能想出的唯一解决方案是使用直接连接到数据库,因此绕过Hibernate
. 这我不太喜欢数据库供应商锁定等原因。
感谢您的任何建议。
我只是好奇是否有办法绕过beforeUpdate()
某个域类的类似方法。
我需要它来恢复用户的原始密码。beforeUpdate
继续我不想调用两次的密码哈希算法。
我能想出的唯一解决方案是使用直接连接到数据库,因此绕过Hibernate
. 这我不太喜欢数据库供应商锁定等原因。
感谢您的任何建议。
你为什么不在域上放置一个 ishashed 属性......
设置新密码时将其设置为 false
在 beforeUpdate 你测试 ishashed
如果为 false,则对密码进行哈希处理并将 ishashed 设置为 true
您可以使用 HQL:
User.executeUpdate("update User u set u.password = :password where u.id = :userId",
[password: oldHashedPassword, userId: userId])
这仍然使用 Hibernate 及其来自数据源供应商的抽象。