我使用spring-data-jpa版本1.5.1.RELEASE。選擇幾個列(DTO)與規範JPA
我的域名:
public class MyDomain{
....
....
private String prop1;
private String prop2;
......
......
}
我的JPA規範是:
public final class MyDomainSpecs {
public static Specification<MyDomain> search(final String prop1,final String prop2) {
return new Specification<MyDomain>() {
public Predicate toPredicate(Root<MyDomain> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
// Some tests if prop1 exist .....
Predicate predicate1 = cb.equal(root.get("prop1"), prop1);
Predicate predicate2 = cb.equal(root.get("prop2"), prop2);
return cb.and(predicate1, predicate2);
}
};
}
}
我的倉庫:
public interface MyDomainRepository extends JpaRepository<MyDomain, Long>, JpaSpecificationExecutor<MyDomain> {
List<MyDomain> findAll(Specification<MyDomain> spec);
}
所有正在工作。 但我的需要(對於性能數據庫調整)是不返回並從數據庫中選擇MyDomain的所有字段。
我只需要選擇例如樹屬性(prop1,prop2,prop3),理想地在DTO對象中。
我不想將我的List<MyDomain>
轉換爲List<MyDto>
,因爲我正在調整數據庫請求。
所以,我沒有找到任何方式來做到這一點與spring-data-Jpa和規範。
任何想法?
感謝
我的問題不是性能,有一個績效審計,在我們的語境表明,我們需要刪除選擇*。爲了您的迴應,您可以提供更多詳細信息,但這並不明確。我需要一個基於Spring-DATA-JPA和規範JPA的解決方案。 – Nabil
'select *'查詢不好,這是真的。然而,我敢打賭,Spring Data JPA和你的JPA提供者(Hibernate,EclipseLink,它永遠都是這樣)創造了這些,這讓我感到非常吃驚。我將爲那些不熟悉JPA的人提供一個例子。 –