PGP_Sym_Encrypt 在休眠状态下不起作用,但在使用手动插入查询时起作用

问题描述

我们正在尝试使用 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 被添加数据库中,并且我可以在休眠之外运行查询

解决方法

我无法让它工作所以我选择创建一个存储过程来为我插入