【发布时间】:2016-12-03 15:44:29
【问题描述】:
通常我使用注释:@Query("SELECT c FROM Country c") 和 JpaRepository 或预定义的方法,如 findAll
但就我而言,我想生成动态查询。
String baseQuery =SELECT c FROM Country c`
if(age!=null)
baseQuery+="WHERE c.age=20"
我需要像这样从代码级别执行相同的查询:
Query q1 = em.createQuery("SELECT c FROM Country c");
但我在 Spring Boot 中不使用 EntityManager
如何从代码级别生成查询?
【问题讨论】:
-
抱歉,是什么阻止您调用存储库的 findAll() 方法?您是否在问不使用 Spring Data JPA 时如何执行 JPA 查询?如果是这样,您尝试过什么,您面临的具体问题是什么?
-
我不能使用 findAll() 因为我想生成动态查询。查询必须依赖于输入值
-
你面临什么问题?您是否阅读过 spring-data-jpa 文档以了解如何创建自定义存储库方法? docs.spring.io/spring-data/jpa/docs/1.7.2.RELEASE/reference/…
-
我不知道如何访问 EntityManager,但我认为 anwser 是创建新类 MyRepositoryImpl 并在那里定义 EntityManager entityManage。我说的对吗?
-
可以使用
@PersistenceContext private EntityManager em;注入实体管理器。
标签: java spring hibernate spring-data spring-data-jpa