问题描述
我们正在尝试使用 pgp_sym_encrypt aes 256 加密我们数据库中的列。
当我在我的数据库上运行“pgp_sym_encrypt(?,'Netswitch@123','compress-algo=1,cipher-algo=aes256')”时,它运行成功并且该字段将被正确插入和加密,但是当我用户休眠:
我已将以下 columntransformer 添加到我的实体中
@ColumnTransformer(write = "pgp_sym_encrypt(?,cipher-algo=aes256')")
@Column(name = "my_field")
String myfield;
sqlException 错误:函数 pgp_sym_encrypt(字符变化,未知,未知)不存在提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
所以我尝试添加演员
@ColumnTransformer(write = "pgp_sym_encrypt(cast(? as Text),cast('Netswitch@123' as Text),cast('compress-algo=1,cipher-algo=aes256' as Text))")
还是一样
sqlException 错误:函数 pgp_sym_encrypt(text,text,text) 不存在 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
(ps pgcrypto 被添加到数据库中,并且我可以在休眠之外运行查询)
解决方法
我无法让它工作所以我选择创建一个存储过程来为我插入