2017-04-27 25 views
0

假設我有一個名爲Employee的模型和70列。我怎樣才能實現查詢 SELECT id from t_employeespring + querydsl沒有修改這段代碼的很多代碼。在Querydsl中只選擇Spring中的特定列?

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

回答

0

我和春天恐怕querydsl整合只允許施工動態謂詞,而不是完整查詢每spring data documentation所示。

我想盡管你可以只使用Employee類中的getId()方法而不修改代碼。

+0

燁,但是否意味着我需要正確的完整模型場遍歷列表!和分裂只有id到arraylist(雙進程)有沒有什麼辦法只返回id不是整個模型字段TT –

+0

不是我所知道的,至少使用querydsl,這是誠實的,我不知道它是考慮到查詢的複雜性,最好的選擇。也許你可以考慮用@Query註釋創建一個自定義查詢。 – megalucio

+0

我也想知道如何做到這一點,因爲即使我使用像@ megalucio這樣的Query註釋,我也會失去使用謂詞過濾的能力。 – fernandodof

0

如果您想要使用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(); 
0

難道你不能在你的倉庫中創建具體的方法來完成這項工作嗎?

employeeRepository.findAllByComapanyId(new Long(data.get("company").toString())); 

,並實現它蒙山QueryDSL(取決於版本):

return new JPAQuery(entityManager) 
.from(employee) 
.where(employee.companyId.eq(comapanyId)) 
.list(employee.id);