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

时间:2015-03-03 16:37:58

标签: jpa spring-data-jpa

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

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

我想将具体的jpql传递给动态方法,这样我们就不必创建如此多的repos,只需要一个人来完成所有的变量查询。这个想法的问题是我没有&#39;知道如何将查询传递给repo并使其工作。有人知道怎么做,是否有可能?感谢

1 个答案:

答案 0 :(得分:1)

您可以实现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
  }
}