如何将 jpql 传递给 spring jpa 中的查询方法?

How to pass jpql to query method in spring jpa?

我们的项目涉及数百个 tables/entities,因此为每个实体创建一个存储库很无聊。我们想创建一个通用存储库以供常见查询使用,它可能具有以下外观:

@Repository
public interface GenericRepo extends JpaRepository<Ctmpdis,Integer> {
   public List findByQl(String jpql,Map params);
}

我想即时将具体的 jpql 传递给方法,这样我们就不必创建那么多 repos 只需要一个来完成所有变量 queries.The 这个想法的问题是我不知道不知道如何将查询传递给 repo 并使其工作。有人知道怎么做吗?有可能吗?谢谢

您可以实现一个 custom repository,这是一个示例

public interface MyRepository<T, ID extends Serializable>
  extends JpaRepository<T, ID> {

  public List findByQl(String jpql,Map params);
}

public class MyRepositoryImpl<T, ID extends Serializable>
  extends SimpleJpaRepository<T, ID> implements MyRepository<T, ID> {

    @PersistenceContext
    private EntityManager entityManager;

  public MyRepositoryImpl(Class<T> domainClass, EntityManager entityManager) {
    super(domainClass, entityManager);
    this.entityManager = entityManager;
  }

  public List findByQl(String jpql,Map params) {
    // implementation goes here
  }
}