嗨,我正在使用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();