2017-08-12 50 views
0

我有获得通过自定义查询有两个参数,春天我的春节RepositoryRestResource接口列表中的一个问题:JPA库休息内执行原生查询资源

@RepositoryRestResource(collectionResourceRel = "benefitplan", path = "benefitplan") 
public interface BenefitPlanRepository extends PagingAndSortingRepository<BenefitPlan, Long> { 
    BenefitPlan findTop1ByBenefitPackageCode(@Param("bpcode") String benefitPackageCode); 
    BenefitPlan findByBenefitPackageCode(@Param("bpcode") String benefitPackageCode); 
    BenefitPlan findTop1ByBenefitPackageCodeAndPlanStatus(@Param("bpcode") String benefitPackageCode, @Param("status") String status); 
    @Query(value = 
      "SELECT b.BENEFIT_PLAN_ID FROM BENEFIT_PLAN b left join MEDICAL_PLAN m on b.MEDICAL_PLAN_ID = m.MEDICAL_PLAN_ID " 
      + "left join RX_PLAN r on b.RX_PLAN_ID = r.RX_PLAN_ID WHERE r.MTV_RX_CD = ?2 and m.MTV_MEDICAL_CD = ?1" 
      , nativeQuery = true) 
    BenefitPlan findByMedicalPlanIdAndRxPlanId(@Param("medicalPlanId") String medicalPlanId, @Param("rxPlanId") String rxPlanId); 
} 

其最后的查询,findByMedicalPlanIdAndPlanId这是给我一个问题。其余的工作正常。我的错误是这样的:

有一个意外的错误(type = Internal Server Error, status = 500)。无法执行查询;嵌套的例外是 org.hibernate.exception.GenericJDBCException:无法执行查询

+0

您可以重命名该方法的名称 – Akash

回答

0

尝试

@Query(value = 
      "SELECT b.BENEFIT_PLAN_ID FROM BENEFIT_PLAN b left join MEDICAL_PLAN m on b.MEDICAL_PLAN_ID = m.MEDICAL_PLAN_ID " 
      + "left join RX_PLAN r on b.RX_PLAN_ID = r.RX_PLAN_ID WHERE r.MTV_RX_CD = :rxPlanId and m.MTV_MEDICAL_CD = :medicalPlanId" 
      , nativeQuery = true) 
    BenefitPlan findByMedicalPlanIdAndRxPlanId(@Param("medicalPlanId") String medicalPlanId, @Param("rxPlanId") String rxPlanId); 

如果您正在使用@Param,你希望使用命名参数,在租赁你应该这样做在查询中。如果它不起作用,我建议你在db客户端执行查询以确保它能正常工作。

+0

在分贝查询,在那里没有问题.. –