Java 将SQL本机查询转换为Spring数据JPA

Java 将SQL本机查询转换为Spring数据JPA,java,mysql,spring,hibernate,spring-data-jpa,Java,Mysql,Spring,Hibernate,Spring Data Jpa,我正在尝试将MySQL原生查询转换为Spring数据JPA查询 @Query(value = "FROM PD p where p.pT = :pT AND p.fY = :fY " + " AND p.Ew.eId in (SELECT ew.eId FROM Ew ew WHERE ew.o.oId in ( :oId ) )") List<PD> test(@Param("pT")String pT,@Param("year") Integer

我正在尝试将MySQL原生查询转换为Spring数据JPA查询

@Query(value = "FROM PD p where p.pT = :pT AND p.fY = :fY "
            + " AND p.Ew.eId in (SELECT ew.eId FROM Ew ew WHERE ew.o.oId in ( :oId ) )")
    List<PD> test(@Param("pT")String pT,@Param("year") Integer year,@Param("oId")String oId);
任何帮助都应该感谢

这太棒了

我需要传递ID的数组列表,而不是逗号分隔的字符串

 @Param("oId")List<Integer> oId
@Param(“oId”)列表oId
这很有效

我需要传递ID的数组列表,而不是逗号分隔的字符串

 @Param("oId")List<Integer> oId
@Param(“oId”)列表oId

您将“nativeQuery=true”。。。所以它需要SQL,而您没有提供SQL。FWIW JPQL以“SELECT{alias}”开头,否则您将自己委托给特定于提供商而没有任何好处(即愚蠢的决定)@DN1哦,是的,我需要从HQL中删除native query=true。。让我试试。Thanks@DN1我编辑了我的问题。@DN1现在明白了,我需要传递数组而不是逗号分隔的字符串,你把“nativeQuery=true”。。。所以它需要SQL,而您没有提供SQL。FWIW JPQL以“SELECT{alias}”开头,否则您将自己委托给特定于提供商而没有任何好处(即愚蠢的决定)@DN1哦,是的,我需要从HQL中删除native query=true。。让我试试。Thanks@DN1我编辑了我的问题。@DN1现在明白了,我需要传递数组而不是逗号分隔的字符串