我们的项目涉及数百个表/实体,因此为每个实体创建单个存储库很无聊。我们想要创建一个通用查询使用的通用存储库,它可能具有以下外观:
@Repository
public interface GenericRepo extends JpaRepository<Ctmpdis,Integer> {
public List findByQl(String jpql,Map params);
}
我想将具体的jpql传递给动态方法,这样我们就不必创建如此多的repos,只需要一个人来完成所有的变量查询。这个想法的问题是我没有&#39;知道如何将查询传递给repo并使其工作。有人知道怎么做,是否有可能?感谢
答案 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
}
}