假设我有一个名为Employee
的模型,列为70。如何在不修改大量代码的情况下在spring + querydsl
中实现查询SELECT id from t_employee
。
BooleanExpression paramEmployee = qEmployee.company.id.eq(new Long(data.get("company").toString()));
Iterable<Employee> employeeReportIterable =employeeRepository.findAll(paramEmployee);
发布于 2017-04-29 16:52:16
如果您想使用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();
发布于 2017-04-27 10:39:05
我担心querydsl与spring的集成只允许构造动态谓词,而不是按照spring data documentation指示的完整查询。
不过,我想您可以只使用Employee类中的getId()
方法,而无需修改代码。
发布于 2017-04-29 20:40:02
你不能在你的存储库中创建特定的方法来完成这项工作吗?
employeeRepository.findAllByComapanyId(new Long(data.get("company").toString()));
并使用QueryDSL实现它(取决于版本):
return new JPAQuery(entityManager)
.from(employee)
.where(employee.companyId.eq(comapanyId))
.list(employee.id);
https://stackoverflow.com/questions/43655014
复制