pgp_sym_decrypt无法与JPA nativeQuery一起使用.总是抛出错误



嗨,我正在使用PSQL进行Spring Boot项目。我有一个实现pgcrypto的模型,像这样,

@ColumnTransformer(
read =  "pgp_sym_decrypt( msisdn::bytea, 'mypassword' )",
write = "pgp_sym_encrypt( ?, 'mypassword' )"
)
@Column(name="msisdn")
private String msisdn;

在我的JPA假设中,像find((、findAll((、findBySomthing(..(这样的每个函数都能完美地工作。结果正确解码了我的msisdn记录。

但它不适用于导航查询。例如,在我的JPA假设中,

@Query(value = "SELECT id, pgp_sym_decrypt( msisdn::bytea, 'mypassword' ) as msisdn FROM tbl_payments ORDER BY id ASC;", nativeQuery = true)
List<MyClass> test();

它总是抛出错误

org.postgresql.util.PSQLException:ERROR:语法错误在"处或附近:">

但是查询是正确的,因为我已经将其复制为直接在数据库上执行查询。

我需要额外的东西来使用JPA nativeQuery吗?

请帮忙。非常感谢。

您的查询:

@Query(value = "SELECT id, pgp_sym_decrypt( msisdn::bytea, 'mypassword' ) as msisdn FROM tbl_payments ORDER BY id ASC;", nativeQuery = true)
List<MyClass> test();

只需在字节中添加\:\:at::

改进的查询:

@Query(value = "SELECT id, pgp_sym_decrypt( msisdn\:\:bytea, 'mypassword' ) as msisdn FROM tbl_payments ORDER BY id ASC;", nativeQuery = true)
List<MyClass> test();

相关内容

最新更新