使用 Querydsl 在 Spring 中仅选择特定列?

Ace*_*loh 8 spring querydsl spring-data-jpa

假设我有一个名为Employee70 列的模型。我如何 SELECT id from t_employeespring + querydsl不修改此代码中的大量代码的情况下实现查询。

BooleanExpression paramEmployee = qEmployee.company.id.eq(new Long(data.get("company").toString()));
Iterable<Employee> employeeReportIterable =employeeRepository.findAll(paramEmployee);
Run Code Online (Sandbox Code Playgroud)

ike*_*ttu 9

如果您想使用 QueryDSL 谓词并具有单一属性响应,您可以直接使用 QueryDSL,而不使用 spring-data。

// where entityManager is a JPA EntityManager
JPAQuery<?> query = new JPAQueryFactory(entityManager);

BooleanExpression paramEmployee = qEmployee.company.id.eq(new Long(data.get("company").toString()));

List<Long> id = query.select(qEmployee.id).from(qEmployee).where(paramEmployee).fetch();
Run Code Online (Sandbox Code Playgroud)

  • 在查询中找不到 ```select()``` 方法(获取 QueryDsl-JPA 3.2.0) (2认同)

meg*_*cio 2

恐怕 querydsl 与 spring 的集成只允许构建动态谓词,而不是按照spring 数据文档指示的完整查询。

我想你可以只使用getId()Employee 类中的方法而不修改代码。