Я хочу войти в систему моих пользователей только в том случае, если их учетная запись активирована, но по какой-то причине запрос, который должен вернуть мне пользователя (я называю это ролью в моей программе), когда ему заданы правильные учетные данные, вообще ничего не получает.
Я на 100% уверен, что учетные данные верны, также я уверен, что в базе данных нет дубликатов, а синтаксис запроса правильный.
Так почему этот метод не подходитвнутри одного из моих EJB-компонентов возвращается true?:
// Checks if the account is not activated!
public boolean isActivated(String email, String password) {
// 1-Send query to database to see if that user exist
Query query = em
.createQuery("SELECT r FROM Role r WHERE r.email=:emailparam AND r.password=:passwordparam");
query.setParameter("emailparam", email);
query.setParameter("passwordparam", password);
List<Object> tmpList = query.getResultList();
if (tmpList.isEmpty() == false) {
System.out.println("IS NOT EMPTY");
Role role = (Role) tmpList.get(0);
if (role.getAccountStatus().trim()
.equalsIgnoreCase(AccountStattus.ACTIVATED.toString())) {
// The account is activated!
System.out.println("ACTIVATED!!!!!!!");
return true;
}
}
// The account is not activated!
System.out.println("NOT ACTIVATED!!!!!!!");
return false;
}
Единственное сообщение, которое я вижу в консоли: НЕ АКТИВИРОВАННЫЙ !!!!
Обновление
Чтобы подтвердить, что список пуст на 100%, я изменил свой код так:
// Checks if the account is not activated!
public boolean isActivated(String email, String password) {
// 1-Send query to database to see if that user exist
System.out.println("HERE:" + email+password);
Query query = em
.createQuery("SELECT r FROM Role r WHERE r.email=:emailparam AND r.password=:passwordparam");
query.setParameter("emailparam", email);
query.setParameter("passwordparam", password);
List<Object> tmpList = query.getResultList();
Iterator<Object> it = tmpList.iterator();
int elements = 0;
while(it.hasNext()) {
elements++;
}
if (elements > 0) {
System.out.println("IS NOT EMPTY");
Role role = (Role) tmpList.get(0);
if (role.getAccountStatus().trim()
.equalsIgnoreCase(AccountStattus.ACTIVATED.toString())) {
// The account is activated!
System.out.println("ACTIVATED!!!!!!!");
return true;
}
}
// The account is not activated!
System.out.println("NOT ACTIVATED!!!!!!!");
return false;
}
Метод по-прежнему возвращает false, когда я ввожу правильные учетные данные.Что не так?