如何将 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
}
}
我们的项目涉及数百个 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
}
}