Java Spring JPA对调用存储过程的本机查询给出“未找到能够从类型转换的转换器”

Java Spring JPA对调用存储过程的本机查询给出“未找到能够从类型转换的转换器”,java,spring-boot,spring-mvc,spring-data-jpa,Java,Spring Boot,Spring Mvc,Spring Data Jpa,我正在使用SpringJPA,我需要一个本机查询来调用存储过程。从结果中,我只需要得到两个字段,即code和msg。我创建了一个包含两个字段代码和msg的类。它不工作,这是我得到的错误: 未能完成请求: org.springframework.core.convert.ConverterNotFoundException:否 发现转换器能够从类型转换 [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConv

我正在使用SpringJPA,我需要一个本机查询来调用存储过程。从结果中,我只需要得到两个字段,即code和msg。我创建了一个包含两个字段代码和msg的类。它不工作,这是我得到的错误:

未能完成请求: org.springframework.core.convert.ConverterNotFoundException:否 发现转换器能够从类型转换 [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] 键入[com.evampsaanga.sez.model.dto.NtnVerification]

下面是我的代码:

public interface CacheOtpRepository extends JpaRepository<CacheOtp, Long> {

    @Query(value = "{call verify_ntn_opt_prc(:ntnNumber, :otpCode)}", nativeQuery = true)
        NtnVerification verifyNtnByOtpStoredProcedure(@Param("ntnNumber") String ntnNumber, @Param("otpCode") String otpCode);
    }

}
下面是使用mysql workbench调用存储过程的结果


尝试使用spring数据JPA接口投影

public interface NtnVerification {
  public int getCode;();
  public String getMsg();
}
您正在从负责CacheOtp持久性的JpaRepository返回NTN验证。您可以使用@ashish提到的投影,也可以用Spring-data-jpa方式调用该过程

Spring data jpa调用存储过程的方法是在实体类上使用@NamedStoredProcedureQuery,然后在jpa存储库中使用@Procedure

你的实体

您的存储库

有关更详细的说明,请参阅

public interface NtnVerification {
  public int getCode;();
  public String getMsg();
}
@NamedStoredProcedureQueries({
@NamedStoredProcedureQuery(
    name = "YOUR_PROCEDURE_NAME",
    procedureName = "PROCEDURE_NAME_IN_THE_DATABASE",
    parameters = {
          ...
          ...
    }
)})    
@Entity
public class NtnVerification {
    ...
    ...
}
@Transactional
public interface NtnVerificationRepository extends CrudRepository<NtnVerification , Long> {

    ...    

    @Procedure(name = YOUR_PROCEDURE_NAME)
    List<NtnVerification> getNtnVerifications();

}