使用StoredProcedureQuery调用PostgreSQL存储过程报语法错误的解决咨询
解决StoredProcedureQuery调用PostgreSQL存储过程的语法错误问题
你的报错核心是SQL语法错误,原因在于调用createStoredProcedureQuery时不该加call关键字——JPA会自动为PostgreSQL生成正确的存储过程调用语句,额外添加call会导致最终生成的SQL出现语法重复,触发PostgreSQL的语法校验错误。
修正后的代码如下:
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("test.pn_testforjava"); query.registerStoredProcedureParameter(1, String.class, ParameterMode.IN); query.setParameter(1, className); query.execute();
补充说明
使用JPA的StoredProcedureQuery时,只需要传入存储过程的完整限定名(模式名.存储过程名)即可,框架会根据底层数据库类型自动适配调用语法,不需要手动添加call、{call ...}这类数据库特定的调用前缀。
内容的提问来源于stack exchange,提问作者melo
相关产品推荐
相关产品推荐

