Java Spring JPA对调用存储过程的本机查询给出“未找到能够从类型转换的转换器”
我正在使用SpringJPA,我需要一个本机查询来调用存储过程。从结果中,我只需要得到两个字段,即code和msg。我创建了一个包含两个字段代码和msg的类。它不工作,这是我得到的错误: 未能完成请求: org.springframework.core.convert.ConverterNotFoundException:否 发现转换器能够从类型转换 [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] 键入[com.evampsaanga.sez.model.dto.NtnVerification] 下面是我的代码: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
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();
}