我有以下呼叫我的存盤庫的服務方法:
List<EmployeeDTO> employees = employeeRepository.findByDepartmentUuid(depUuid);
在存盤庫中,如果depUuid引數不是 null,我可以毫無問題地填充 DTO 。
@Query(value = "SELECT e.uuid as empUuid, e.name as empName FROM Employee e "
"WHERE e.depUuid = :depUuid")
List<EmployeeDTO> findByDepartmentUuid(@Param(value = "depUuid") UUID depUuid);
但是,如果depUuid引數為空,我想檢索所有記錄。那么,我該如何管理呢?
注意:我正在使用 JPQL 并且需要一個解決方案,而不是本機查詢。
uj5u.com熱心網友回復:
以下查詢將完成這項作業。
@Query(value = "SELECT e.uuid as empUuid, e.name as empName FROM Employee e "
"WHERE (?1 is NOT NULL AND e.depUuid = ?1 ) OR ?1 is NULL )"
List<EmployeeDTO> findByDepartmentUuid(@Param(value = "depUuid") UUID depUuid);
uj5u.com熱心網友回復:
您可以將查詢更改為不使用關系選擇子句,因此您只需從整個表中進行選擇。您的 Java 方法將沒有引數,您可以將其稱為 findAllEmployees()。
如果您真的想使用您已經定義的相同方法,則測驗空輸入并委托給您的新 findAllEmployees() 方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/391916.html
