Итак, у меня есть этот код для проверки имени пользователя и пароля с использованием Java persistence.Почему имя пользователя и пароль не возвращаются?
public Subscriber validateLogin(String username, String password)
{
EntityManager em = getEntityManager();
Query q = em.createQuery("SELECT s FROM Subscriber s WHERE s.username = :username OR s.password = :password ");
q.setParameter("username", username);
q.setParameter("password", password);
try
{
return (Subscriber) q.getSingleResult();
}
catch (Exception e)
{
return null;
}
}
Так я проверяю, если абонент ничего возвращать или null
. Вот мой код:
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
SubscriberJpaController sjc = new SubscriberJpaController();
Subscriber sub = sjc.validateLogin(jTextField1.getText(), jPasswordField1.getText());
System.out.println(sub);
}
и возвращает null
. Что-то не так с моим кодом или логикой?
Распечатайте stacktrace перед возвратом null в вашем блоке catch. – Kent
Единственная проблема, которую я вижу, это 's.username =: username ИЛИ s.password =: password'. Разве это не должно быть «И»? В противном случае, если кто-то ошибочно получит пароль, он все равно войдет в систему. – Jim
iuse AND и его все еще null. мой класс Subscriber является абстрактным классом. любая проблема с этим? – tddiaz