Problemas com bean em JPA

estou trabalhando com jpa e estou com alguns problemas, não consigo entender o por que desse erro, os beans são gerado de uma classe do banco da dados e quando eu faço alguns testes em JSP e ele me retorna os seguintes erros.

[size=18]javax.servlet.ServletException: Error testing property ‘diasemana’ in bean of type null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
[/size]

Poste o seu código aqui , para que possamos te ajudar.

é, “fião”, sem código fica difícil ajudar em alguma coisa… posta ae

[quote=ruilima]estou trabalhando com jpa e estou com alguns problemas, não consigo entender o por que desse erro, os beans são gerado de uma classe do banco da dados e quando eu faço alguns testes em JSP e ele me retorna os seguintes erros.

[size=18]javax.servlet.ServletException: Error testing property ‘diasemana’ in bean of type null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
[/size][/quote]

Ae galera foi mal, segue o codigo!!![b]

jsp

<f:view>
<h:messages errorStyle=“color: red” infoStyle=“color: green” layout=“table”/>

Agenda Chefe Casa Civil


<h:form>












<%-- --%>

<h:outputText value=“Data (dd/MM/yyyy):”/> <h:inputText id=“data” value="#{agchefe.agchefe.data}" title=“Data” >
<f:convertDateTime type=“DATE” pattern=“dd/MM/yyyy” />
</h:inputText>
<h:outputText value=“Dia da semana:”/> <h:inputText id=“diasemana” value="#{agchefe.agchefe.diasemana}" title=“Dia da semana” />
<h:outputText value=“Descricao:”/> <h:inputText id=“descricao” value="#{agchefe.agchefe.descricao}" title=“Descricao” />





<h:commandLink action="#{agchefe.create}" value=“Create”/>


<h:commandLink action=“agchefe_list” value=“Show All Agchefe”/>
        </h:form>
    </f:view>

Bean

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
*
*

  • @author Rui Lima
    */
    @Entity
    @Table(name = “public.agchefe”)
    @NamedQueries( {
    @NamedQuery(name = “Agchefe.findById”, query = “SELECT a FROM Agchefe a WHERE a.id = :id”),
    @NamedQuery(name = “Agchefe.findByData”, query = “SELECT a FROM Agchefe a WHERE a.data = :data”),
    @NamedQuery(name = “Agchefe.findByDiasemana”, query = “SELECT a FROM Agchefe a WHERE a.diasemana = :diasemana”),
    @NamedQuery(name = “Agchefe.findByDescricao”, query = “SELECT a FROM Agchefe a WHERE a.descricao = :descricao”)
    })
    public class Agchefe implements Serializable {

    @Id
    @Column(name = “id”, nullable = false)
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    @SequenceGenerator(name=“public.agchefe_id_seq”)
    private Integer id;

    @Column(name = “data”)
    @Temporal(TemporalType.DATE)
    private Date data;

    @Column(name = “diasemana”)
    private String diasemana;

    @Column(name = “descricao”)
    private String descricao;

    /** Creates a new instance of Agchefe */
    public Agchefe() {
    }

    /**

    • Cria uma nova instância de Agchefe com os valores especificados.
    • @param id o id do Agchefe
      */
      public Agchefe(Integer id) {
      this.id = id;
      }

    /**

    • Define o id deste Agchefe.
    • @return o id
      */
      public Integer getId() {
      return this.id;
      }

    /**

    • Define o id deste Agchefe para o valor especificado.
    • @param id o novo id
      */
      public void setId(Integer id) {
      this.id = id;
      }

    /**

    • Define o data deste Agchefe.
    • @return o data
      */
      public Date getData() {
      return this.data;
      }

    /**

    • Define o data deste Agchefe para o valor especificado.
    • @param data o novo data
      */
      public void setData(Date data) {
      this.data = data;
      }

    /**

    • Define o diasemana deste Agchefe.
    • @return o diasemana
      */
      public String getDiasemana() {
      return this.diasemana;
      }

    /**

    • Define o diasemana deste Agchefe para o valor especificado.
    • @param diasemana o novo diasemana
      */
      public void setDiasemana(String diasemana) {
      this.diasemana = diasemana;
      }

    /**

    • Define o descricao deste Agchefe.
    • @return o descricao
      */
      public String getDescricao() {
      return this.descricao;
      }

    /**

    • Define o descricao deste Agchefe para o valor especificado.
    • @param descricao o novo descricao
      */
      public void setDescricao(String descricao) {
      this.descricao = descricao;
      }

    /**

    • Retorna um valor de código hash para o objeto. Esta implementação computa
    • um valor de código hash baseado nos campos id deste objeto.
    • @return um valor de código hash para este objeto.
      */
      @Override
      public int hashCode() {
      int hash = 0;
      hash += (this.id != null ? this.id.hashCode() : 0);
      return hash;
      }

    /**

    • Determina se outro objeto é igual a este Agchefe. O resultado é
    • true se e somente se o argumento não for nulo e for um objeto Agchefe o qual
    • tem o mesmo valor para o campo id como este objeto.
    • @param object o objeto de referência com o qual comparar
    • @return true se este objeto é o mesmo como o argumento;
    • false caso contrário.
      */
      @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 Agchefe)) {
      return false;
      }
      Agchefe other = (Agchefe)object;
      if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) return false;
      return true;
      }

    /**

    • Retorna uma representação literal deste objeto. Esta implementação cria
    • uma representação baseada nos campos id.
    • @return uma representação literal deste objeto.
      */
      @Override
      public String toString() {
      return “casacivil.pa.gov.sitio.entidades.Agchefe[id=” + id + “]”;
      }

}

Minha classe controler

public class AgchefeController {

/** Creates a new instance of AgchefeController */
public AgchefeController() {
    emf = Persistence.createEntityManagerFactory("casacivilAdminPU");
}

private Agchefe agchefe;

private DataModel model;

private EntityManagerFactory emf;

private EntityManager getEntityManager() {
    return emf.createEntityManager();
}

private int batchSize = 20;

private int firstItem = 0;

public Agchefe getAgchefe() {
    return agchefe;
}

public void setAgchefe(Agchefe agchefe) {
    this.agchefe = agchefe;
}

public DataModel getDetailAgchefes() {
    return model;
}

public void setDetailAgchefes(Collection<Agchefe> m) {
    model = new ListDataModel(new ArrayList(m));
}

public String createSetup() {
    this.agchefe = new Agchefe();
    return "agchefe_create";
}

public String create() {
    EntityManager em = getEntityManager();
    try {
        em.getTransaction().begin();
        em.persist(agchefe);
        em.getTransaction().commit();
        addSuccessMessage("Agchefe was successfully created.");
    } catch (Exception ex) {
        try {
            addErrorMessage(ex.getLocalizedMessage());
            em.getTransaction().rollback();
        } catch (Exception e) {
            addErrorMessage(e.getLocalizedMessage());
        }
    } finally {
        em.close();
    }
    return "agchefe_list";
}

public String detailSetup() {
    setAgchefeFromRequestParam();
    return "agchefe_detail";
}

public String editSetup() {
    setAgchefeFromRequestParam();
    return "agchefe_edit";
}

public String edit() {
    EntityManager em = getEntityManager();
    try {
        em.getTransaction().begin();
        agchefe = em.merge(agchefe);
        em.getTransaction().commit();
        addSuccessMessage("Agchefe was successfully updated.");
    } catch (Exception ex) {
        try {
            addErrorMessage(ex.getLocalizedMessage());
            em.getTransaction().rollback();
        } catch (Exception e) {
            addErrorMessage(e.getLocalizedMessage());
        }
    } finally {
        em.close();
    }
    return "agchefe_list";
}

public String destroy() {
    EntityManager em = getEntityManager();
    try {
        em.getTransaction().begin();
        Agchefe agchefe = getAgchefeFromRequestParam();
        agchefe = em.merge(agchefe);
        em.remove(agchefe);
        em.getTransaction().commit();
        addSuccessMessage("Agchefe was successfully deleted.");
    } catch (Exception ex) {
        try {
            addErrorMessage(ex.getLocalizedMessage());
            em.getTransaction().rollback();
        } catch (Exception e) {
            addErrorMessage(e.getLocalizedMessage());
        }
    } finally {
        em.close();
    }
    return "agchefe_list";
}

public Agchefe getAgchefeFromRequestParam() {
    EntityManager em = getEntityManager();
    try{
        Agchefe o = (Agchefe) model.getRowData();
        o = em.merge(o);
        return o;
    } finally {
        em.close();
    }
}

public void setAgchefeFromRequestParam() {
    Agchefe agchefe = getAgchefeFromRequestParam();
    setAgchefe(agchefe);
}

public DataModel getAgchefes() {
    EntityManager em = getEntityManager();
    try{
        Query q = em.createQuery("select object(o) from Agchefe as o");
        q.setMaxResults(batchSize);
        q.setFirstResult(firstItem);
        model = new ListDataModel(q.getResultList());
        return model;
    } finally {
        em.close();
    }
}

public static void addErrorMessage(String msg) {
    FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg);
    FacesContext fc = FacesContext.getCurrentInstance();
    fc.addMessage(null, facesMsg);
}

public static void addSuccessMessage(String msg) {
    FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg);
    FacesContext fc = FacesContext.getCurrentInstance();
    fc.addMessage("successInfo", facesMsg);
}

public Agchefe findAgchefe(Integer id) {
    EntityManager em = getEntityManager();
    try{
        Agchefe o = (Agchefe) em.find(Agchefe.class, id);
        return o;
    } finally {
        em.close();
    }
}

public int getItemCount() {
    EntityManager em = getEntityManager();
    try{
        int count = ((Long) em.createQuery("select count(o) from Agchefe as o").getSingleResult()).intValue();
        return count;
    } finally {
        em.close();
    }
}

public int getFirstItem() {
    return firstItem;
}

public int getLastItem() {
    int size = getItemCount();
    return firstItem + batchSize > size ? size : firstItem + batchSize;
}

public int getBatchSize() {
    return batchSize;
}

public String next() {
    if (firstItem + batchSize < getItemCount()) {
        firstItem += batchSize;
    }
    return "agchefe_list";
}

public String prev() {
    firstItem -= batchSize;
    if (firstItem < 0) {
        firstItem = 0;
    }
    return "agchefe_list";
}

Não ajudou muita coisa , mas interpretando o código fonte me parece que você não está passando o dia da semana , e está dando erro quando o JPA vai validar as suas consultas na namedQuery.

pois é, creio que não seria isso do NamedQuery, pois estou passando @NamedQuery(name = “Agchefe.findByDiasemana”, query = “SELECT a FROM Agchefe a WHERE a.diasemana = :diasemana”),

deixa eu te explicar, é que essa classe bean e a jsp foram geradas a partir do banco de dados. Pois tanto nas classes quanto na no banco dados o atributo não esta definido como null, então no momento em que executo a aplicação ela roda normalmente é quando passo os parametros inserindo diretamente no jsp (que é um JSF) ele me retorna esse erro javax.servlet.ServletException: Error testing property ‘diasemana’ in bean of type null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:209).

Não sei se vc teve algum tipo de problema referente a isso!!!

pois é, creio que não seria isso do NamedQuery, pois estou passando @NamedQuery(name = “Agchefe.findByDiasemana”, query = “SELECT a FROM Agchefe a WHERE a.diasemana = :diasemana”),

deixa eu te explicar, é que essa classe bean e a jsp foram geradas a partir do banco de dados. Pois tanto nas classes quanto na no banco dados o atributo não esta definido como null, então no momento em que executo a aplicação ela roda normalmente é quando passo os parametros inserindo diretamente no jsp (que é um JSF) ele me retorna esse erro javax.servlet.ServletException: Error testing property ‘diasemana’ in bean of type null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:209).

Não sei se vc teve algum tipo de problema referente a isso!!!

pois é, creio que não seria isso do NamedQuery, pois estou passando @NamedQuery(name = “Agchefe.findByDiasemana”, query = “SELECT a FROM Agchefe a WHERE a.diasemana = :diasemana”),

deixa eu te explicar, é que essa classe bean e a jsp foram geradas a partir do banco de dados. Pois tanto nas classes quanto na no banco dados o atributo não esta definido como null, então no momento em que executo a aplicação ela roda normalmente é quando passo os parametros inserindo diretamente no jsp (que é um JSF) ele me retorna esse erro javax.servlet.ServletException: Error testing property ‘diasemana’ in bean of type null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:209).

Não sei se vc teve algum tipo de problema referente a isso!!!

pois é, creio que não seria isso do NamedQuery, pois estou passando @NamedQuery(name = “Agchefe.findByDiasemana”, query = “SELECT a FROM Agchefe a WHERE a.diasemana = :diasemana”),

deixa eu te explicar, é que essa classe bean e a jsp foram geradas a partir do banco de dados. Pois tanto nas classes quanto na no banco dados o atributo não esta definido como null, então no momento em que executo a aplicação ela roda normalmente é quando passo os parametros inserindo diretamente no jsp (que é um JSF) ele me retorna esse erro javax.servlet.ServletException: Error testing property ‘diasemana’ in bean of type null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:209).

Não sei se vc teve algum tipo de problema referente a isso!!!