我想实现一个带有五个可选变量的搜索功能,并且在每个组合中,所以切换/大小写不可能。所以我不能在spring引导函数中使用build,因为它们不是动态的(如果我错了,请纠正我)。 我知道crudrepository中有@query注释,但是没有办法用可选参数编写查询? 我试图用jpa编写自己的数据库访问,没有Spring boot CrudRepository的帮助。 我在手册中读到这应该有效:
@Autowired
@PersistenceContext
private EntityManager em;
@Transactional
public List<Persons>searchPersons(params...){}
但问题是,我的EntityManager始终为null,我不明白为什么。我搜索了几个小时,一无所获。
也许你们知道在Spring Boot中编写动态SQL查询的方法。 CrudRepository中有一种方法可以为查询定义可选参数吗? 顺便说一句,我使用postgreSQL数据库。
非常感谢你的帮助。
答案 0 :(得分:4)
答案 1 :(得分:0)
您可以使用自定义存储库(创建自己的接口,为其编写一个Impl类,并通过该接口扩展存储库。
然后你应该:
PersonRepositoryCustom
PersonRepositoryCustomImpl
接下来,使用自动装入存储库的EntityManager实现查询。您可以使用JPQL或JPA 2.1 Criteria API执行此操作。
对于每个参数,都有条件将其添加到查询本身,以及准备好的语句参数。这样,您就可以构建动态查询。
以下主题是相关的: Best way to create JPA query that might contain a parameter or might not