Piszę aplikacje webową pod NetBeansem ( ejb, jpa, jsf, glassfish ) z wykorzystaniem bazy Postgres oraz architektury MVC. Normalne wyświetlanie elementów z bazy przebiega bezproblemowo. Ale gdy chce wykonać takie zapytanie:
encja user.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pl.kkp.entities;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 *
 * @author DoM
 */
@Entity
@Table(name = "users")
@NamedQueries({
    @NamedQuery(name = "User.findAll",
                query = "SELECT u FROM User u"),
    @NamedQuery(name = "User.findByLoginAndPass",
                query = "SELECT u FROM User u WHERE u.login = :l AND u.password = :p ")
})
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Column(name = "login")
    private String login;
    @Column(name = "password")
    private String password;
    @Column(name = "auth_level")
    private Short authLevel;
    @Column(name = "is_active")
    private String isActive;
    @JoinColumn(name = "id_customer", referencedColumnName = "id")
    @ManyToOne
    private Customer idCustomer;

    public User() {
    }

    public User(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Short getAuthLevel() {
        return authLevel;
    }

    public void setAuthLevel(Short authLevel) {
        this.authLevel = authLevel;
    }

    public String getIsActive() {
        return isActive;
    }

    public void setIsActive(String isActive) {
        this.isActive = isActive;
    }

    public Customer getIdCustomer() {
        return idCustomer;
    }

    public void setIdCustomer(Customer idCustomer) {
        this.idCustomer = idCustomer;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof User)) {
            return false;
        }
        User other = (User) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "pl.kkp.entities.User[id=" + id + "]";
    }

}

bean UserDAOBean.java

    public boolean checkUser(String l, String p) {
        List users = new LinkedList();
        Query query = em.createNamedQuery("User.findByLoginAndPass");
        query.setParameter("l", l);
        query.setParameter("p", p);
        users = query.getResultList();

        if (users.isEmpty()) {
            return false;
        } else {
            return true;
        }
    }

Następnie w warstwie webowej w klasie UserController.java implementuję tą metodę:

    public String checkUsers(String l, String p) {
        String r = "s";
        boolean lol = userDao.checkUser(user.getLogin(), user.getPassword());

        if (lol) {
            r = "s";
        } else {
            r = "f";
        }
        return r;
    }

W pliku index.jsp po podaniu przez użytkownika loginu i hasła powinno nastąpić wywołanie powyższej metody

<table class="log">
                     <tr><td>Login: </td><td>
                             <h:inputText value="#{userBean.user.login}" id="login" maxlength="20" size="15" />
                            
</td></tr>
                     <tr><td>Hasło: </td><td>
                             <h:inputSecret value="#{userBean.user.password}" id="password" maxlength="20" size="15" />
                            
</td></tr>
                     <tr><td></td><td>
                             <h:commandButton value="Zaloguj" id="zaloguj" action="#{userBean.checkUsers}" />
                         </td>
                     </tr>
                 </table>

Gdy uruchamiam serwer wpisuje login i hasło, naciskam przycisk zaloguj - pojawia mi się następująca strona

javax.el.PropertyNotFoundException: Target Unreachable, 'null' returned null
    at com.sun.el.parser.AstValue.getTarget(AstValue.java:150)
    at com.sun.el.parser.AstValue.getType(AstValue.java:76)
    at com.sun.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:195)
    at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
    at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1008)
    at javax.faces.component.UIInput.validate(UIInput.java:934)
...

Ma ktoś pomysł jak ten problem rozwiązać ?? Domyślam się, że bean kończy swój żywot z chwilą naciśnięcia przycisku zaloguj, nie wiem tylko jak ten problem rozwiązać.

Aha jeszcze plik faces-config.xml

<?xml version='1.0' encoding='UTF-8'?>

<faces-config version="1.2"
               xmlns="http://java.sun.com/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://java.sun.com/xml/ns/javaee">
     <managed-bean>
         <managed-bean-name>userBean</managed-bean-name>
         <managed-bean-class>pl.kkp.controller.UserController</managed-bean-class>
         <managed-bean-scope>session</managed-bean-scope>
     </managed-bean>
     <navigation-rule>
         <from-view-id>/baza.jsp</from-view-id>
         <navigation-case>
             <from-outcome>create_new_user</from-outcome>
             <to-view-id>/good.jsp</to-view-id>
         </navigation-case>
     </navigation-rule>
     <navigation-rule>
         <from-view-id>/index.jsp</from-view-id>
         <navigation-case>
             <from-outcome>s</from-outcome>
             <to-view-id>/good.jsp</to-view-id>
         </navigation-case>
         <navigation-case>
             <from-outcome>f</from-outcome>
             <to-view-id>/bad.jsp</to-view-id>
         </navigation-case>
     </navigation-rule>
</faces-config>