【发布时间】:2016-10-03 04:52:29
【问题描述】:
我想在每个组合中实现一个包含五个可选变量的搜索功能,因此开关/案例不是一种可能的方式。所以我不能在spring boot函数中使用构建,因为它们不是动态的(如果我错了,请纠正我)。 我知道 crudrepository 中有 @query 注释,但是没有办法编写带有可选参数的查询? 我尝试使用 jpa 编写自己的数据库访问,而没有 spring boot CrudRepository 的帮助。 我在手册中读到这应该可以工作:
@Autowired
@PersistenceContext
private EntityManager em;
@Transactional
public List<Persons>searchPersons(params...){}
但问题出在这里,我的 EntityManager 始终为空,我不知道为什么。我搜索了几个小时,一无所获。
也许你们知道一种在 Spring Boot 中编写动态 SQL 查询的方法。 CrudRepository 中有没有办法为查询定义可选参数? 顺便说一句,我使用 postgreSQL 数据库。
非常感谢您的帮助。
【问题讨论】:
-
你的应用应该有针对每种情况的独立 dao 方法,但不是动态的,这似乎是一种不好的做法。然后服务层应该决定调用哪一种 dao 方法。你可以在那里检查它的可选性。
-
您自己没有实例化该类 (
new WhateverClassThatCodeIsIn())? stackoverflow.com/questions/19896870/…(阅读:“我有一个 Spring@Repository类..) -
@WildDev 这是不可能的。你的意思是一个 switch 案例或一些 if 案例来决定采取什么。但这将是由 5 个可选参数 5!案例。为什么这是生成动态 sql 语句的坏习惯?
-
@Mortalis,http://stackoverflow.com/a/3415629/3019024。您尝试实现的逻辑很复杂,这表明您的业务层设计存在错误。
标签: java spring spring-boot spring-data-jpa