IllegalArgumentException: не удалось найти именованный параметр - PullRequest
0 голосов
/ 20 февраля 2020

Я передаю карту в качестве параметра следующего метода:

    public List<User> getByParameterOrAll(Map<String, String> paramsMap) {
    String email = null;
    String emailValue = null;
    String phone = null;
    String phoneValue = null;

    Iterator<Map.Entry<String, String>> entries = paramsMap.entrySet().iterator();
    while (entries.hasNext()) {
        Map.Entry<String, String> entry = entries.next();
        if (entry.getKey().equals("email")){
            email = entry.getKey();
            emailValue = entry.getValue();
        } else if (entry.getKey().equals("phone")){
            phone = entry.getKey();
            phoneValue = entry.getValue();
        }
    }

    List<User> users = em.createQuery("SELECT u FROM User u WHERE u.email=:emailValue AND u.phone=:phoneValue", User.class).
            setParameter(emailValue, email).
            setParameter(phoneValue, phone).
            getResultList();
    return users;
}

И ловлю строку "setParameter (emailValue, email)"

java.lang.IllegalArgumentException: Could not locate named parameter [gmail@gmail.com], expecting one of [phoneValue, emailValue]

Я прикрепляю экран моего теста

Testing_screen

1 Ответ

2 голосов
/ 20 февраля 2020

Вы должны исправить свой запрос следующим образом (см. Документацию ):

List<User> users = em.createQuery("SELECT u FROM User u WHERE u.email=:emailValue AND u.phone=:phoneValue", User.class).
            setParameter("emailValue", email).
            setParameter("phoneValue", phone).
            getResultList();
...