java HIbernate在getter/setter中加密和解密?
问题是提供加密某些实体属性的能力
由于实体是groovy类,并且是在运行时生成的,所以我将 setter中的加密逻辑和getter中的解密逻辑。但hibernate似乎希望Getter/Setter是对称的。会议结束了。save()调用getter在内部设置值,因此它总是将解密后的版本保存到数据库中
这是Hibernate的默认行为吗?有什么办法可以绕过这个问题吗
你可以在下面搜索框中键入要查询的问题!
问题是提供加密某些实体属性的能力
由于实体是groovy类,并且是在运行时生成的,所以我将 setter中的加密逻辑和getter中的解密逻辑。但hibernate似乎希望Getter/Setter是对称的。会议结束了。save()调用getter在内部设置值,因此它总是将解密后的版本保存到数据库中
这是Hibernate的默认行为吗?有什么办法可以绕过这个问题吗
# 1 楼答案
每当你想在数据库和持久实体之间做一些调整时,方法就是使用custom user type。我用它来确保保存的字符串中填充空格。与向getter和setter添加代码相比,它的侵扰性要小得多,而且可以避免由于Hibernate认为自己做了更改而导致的意外保存问题
# 2 楼答案
你需要在这里使用GORM事件。在数据库插入之前进行加密
并在从数据库读取后解密:
}
在更新期间使用
def beforeUpdate()
进行加密参考: http://grails.org/doc/latest/guide/GORM.html#5.5.1%20Events%20and%20Auto%20Timestamping