我有一些具有多个字段的实体。我的客户想要使用变量 where 子句获得一些选择。
例如第一次可能是
"where name='John' and id_version=5"
那么名称字段可能根本没有使用
"where id_version=5"
或者可能添加一些新字段
"where id_version=5 and sex='male'"
使用 JPA 和 Spring 存储库实现它的最佳实践是什么?
最佳答案
在 JPA 中编写动态查询没有单一的最佳实践。但大多数最佳实践将使用 JPA Criteria API 或替代方案(如 Querydsl)。
如果您没有一些不寻常的需求,那么使用字符串连接动态生成 JPQL 查询并不是最佳实践(特别是当使用字符串连接将参数插入到查询中而不是使用索引或命名参数时)。
由于您使用的是 Spring,Spring Data JPA是一个用于创建 JPA 存储库的出色库。它可以与 JPA Criteria API 或 Querydsl 一起使用。如果您只需要为单个实体编写动态查询,它可能会有点复杂,但当您对许多实体有这种需求时,它会变得非常有用。
关于带有更改 where 子句的 JPA 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21496825/