我有一個回傳物件串列的本機查詢,我需要將陣列作為引數傳遞給函式getAllUsers。
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
@Query(nativeQuery = true, value = "SELECT id FROM users WHERE code1=(?1)[0] AND code2=(?1)[1]")
public List<Object[]> getAllUsers(List<String> list);
}
問題是我無法list在查詢中獲取引數值:code1=(?1)[0] AND code2=(?1)[1]。
我嘗試使用型別:
public List<Object[]> getAllUsers(String[] list);
public List<Object[]> getAllUsers(String ...list);
但總是沒有結果
非常感謝任何幫助
uj5u.com熱心網友回復:
我不確定這@Query是進行動態查詢的正確方法。您應該考慮 CriteriaAPI 的使用。您可以嘗試使用Specification或QueryDsl https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl
通過規范解決您的問題的示例:
@Repository
public interface UserRepository
extends JpaRepository<User, Integer>, JpaSpecificationExecutor<User> {
}
@Service
@RequiredAllArgConstuctor
public class UserService {
private final UserRepository userRepository;
public List<User> getAllUsers(List<String> codeArguments) {
var specification = (Specification<T>) (root, query, criteriaBuilder) -> {
var predicates = new Predicate[codeArguments.size()];
for (int i = 0; i < codeArguments.size(); i ) {
var predicate = criteriaBuilder.equal(root.get("code" (i 1)), codeArguments.get(i));
predicates[i] = (predicate);
}
return criteriaBuilder.and(predicates);
};
return userRepository.findAll(specification);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/473257.html
標籤:爪哇 PostgreSQL 弹簧靴 jpa
