簡體   English   中英

調用存儲過程的 Spring JPA 本機查詢給出“找不到能夠從類型轉換的轉換器”

[英]Spring JPA native query to call store procedrure gives “No converter found capable of converting from type”

我正在使用 Spring JPA,我需要一個本機查詢來調用存儲過程。 從結果來看,我只需要得到兩個字段,即代碼和味精。 我做了一個包含兩個字段代碼和味精的類。 它不起作用,這是我收到的錯誤:

無法完成請求: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);
    }

}

這是我的 dto 課

public class NtnVerification {

    private int code;
    private String msg;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

}

這是我使用 mysql 工作台調用存儲過程時的結果

這是我使用 mysql 工作台調用存儲過程時的結果

嘗試使用spring數據JPA界面投影

public interface NtnVerification {
  public int getCode;();
  public String getMsg();
}

您在返回NtnVerification從JpaRepository這需要的持久性照顧CacheOtp 您可以使用@ashish提到的Projections或以 Spring data jpa 方式調用該過程。

Spring的數據JPA的方式調用存儲Procudure是使用@NamedStoredProcedureQuery對你的實體類,然后使用@Procedure在JPA庫。

您的實體

@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();

}

您可以參考本教程以獲得更詳細的解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM