Xor*_*rty 6 java spring jpa spring-data
我正在使用Spring Data JPA存储库(1.7.2),通常遇到以下情况:
fetch join)Page<Foo>而不是List<Foo>我需要提供countQuery给@Query在返回的存储库中使用提取联接的每个对象Page。此问题已在此StackOverflow问题中进行了讨论
我典型的存储库方法如下所示:
@Query(value = "SELECT e FROM Employee e LEFT JOIN FETCH e.addresses a " +
"WHERE e.company.id = :companyId " +
"AND e.deleted = false " +
"AND e.primaryAddress.deleted = false " +
"ORDER BY e.id, a.id",
countQuery="SELECT count(e) FROM Employee e WHERE e.companyId = :companyId AND e.deleted = false AND e.primaryAddress.deleted = false"
)
Page<Employee> findAllEmployeesWithAddressesForCompany(@Param("companyId") long companyId, Pageable pageable);
Run Code Online (Sandbox Code Playgroud)
显然,它不是很干。您可以说我在value和countQuery参数中都重复了所有条件。我如何在这里保持干燥?
你可以做这样的事情
public interface MyRepository extends JpaRepository {
public static final String WHERE_PART = "e.companyId = :companyId AND e.deleted = false AND e.primaryAddress.deleted = false ";
@Query(value = "SELECT e FROM Employee e LEFT JOIN FETCH e.addresses a " +
"WHERE " + MyRepository.WHERE_PART
"ORDER BY e.id, a.id",
countQuery="SELECT count(e) FROM Employee e WHERE " + MyRepository.WHERE_PART
)
Page<Employee> findAllEmployeesWithAddressesForCompany(@Param("companyId") long companyId, Pageable pageable);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2987 次 |
| 最近记录: |