有没有办法将原生查询作为变量传递?
我想使用类似的东西
@Component
public interface MyRepository extends JpaRepository<MyClass, long>{
@Query(nativeQuery = true, value = query)
List<Sapf> find(String query);
}
答案 0 :(得分:2)
您需要一个自定义存储库来解决您的问题。根据{{3}},您可以从界面开始:
public interface MyRepositoryCustom {
List<Sapf> find(String query);
}
然后你需要实现它。您需要注入实体管理器,以便执行本机查询:
public class MyRepositoryCustomImpl implements MyRepositoryCustom {
@PersistenceContext(unitName = "yourPersistenceUnitName")
private EntityManager em;
List<Sapf> find(String query) {
Query query = em.createNativeQuery(query, Sapf.class);
return query.getResultList();
}
}
最后,在Spring Data Repository中扩展创建的接口,其余部分由框架完成。
@Repository
public interface MyRepository extends JpaRepository<MyClass, long>, MyRepositoryCustom {
}
根据您的Spring配置,应自动使用您的自定义实现。如果没有,请查看文档以调整您的设置。