带有更改 where 子句的 JPA 查询

标签 jpa

我有一些具有多个字段的实体。我的客户想要使用变量 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/

相关文章:

java - 将选择计数添加到 vaadin 数据源

EclipseLink添加一个Converter会间歇性地导致ValidationException

java - 如何对 Wicket/Spring 页面 View 使用单个事务?

java - SimpleJpaRepository 不修改持久化实体

java - Spring boot : java. lang.IllegalArgumentException:driverClassName 需要 jdbcUrl

java - Spring +JPA : object does not get fetched from the database

java - Spring Boot JPA Many2One、One2Many两种方式无法正常工作

java - 在 JPA 或 Hibernate 查询中使用 Constructor Result 会影响性能吗?

java - 用于读取的 JPA 锁定实体

java - 使用 CriteriaBuilder (OpenJPA) 与基类连接时转换为子类