Olá pessoal, bom, eu sou bem inciante em JSF e Hibernate e minha dúvida deve ser até algo bem simples, mas que eu não sei nem como resolver.
Bom, eu estou usando o Exadel Studio e modelei algumas classes para representar meu banco de dados, elas contem apenas os atributos necessário e os metodos getter e setter. Depois eu adicionei a capacidade do hibernate ao projeto usando "object to schema" e criei o arquivo DDL para a criação do BD. Até ai tudo bem. Após fazer isso eu criei as classes DAO que o Exadel gera para mim e usando elas criei um Managed Bean. Vou colocar o exemplo de uma dessas classes:
Idiomas.java
public class Idiomas {
private String nome;
/** auto generated
* @es_generated
*/
private Integer id;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
/** auto generated
* @es_generated
*/
public Integer getId() {
return this.id;
}
/** auto generated
* @es_generated
*/
public void setId(Integer value) {
this.id = value;
}
}
IdiomasDAOImpl.java
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import java.util.List;
import org.hibernate.Criteria;
import dominio.Idiomas;
import java.util.Iterator;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.Order;
import org.hibernate.LockMode;
public class IdiomasDAOImpl implements IdiomasDAO {
/** auto generated
* @es_generated
*/
SessionFactory sessionFactory = null;
/** auto generated
* @es_generated
*/
public void setSessionFactory(SessionFactory value) {
this.sessionFactory = value;
}
/** auto generated
* @es_generated
*/
private SessionFactory getSessionFactory() {
return this.sessionFactory;
}
/** auto generated
* @es_generated
*/
public Session getSession() {
return getSessionFactory().getCurrentSession();
}
/** auto generated
* @es_generated
*/
public List getAll() {
List values = null;
Session session = getSession();
Criteria allValues = session.createCriteria(Idiomas.class);
values = allValues.list();
return values;
}
/** auto generated
* @es_generated
*/
public Iterator iterateAll() {
return getAll().iterator();
}
/** auto generated
* @es_generated
*/
public Idiomas getById(Integer id) {
Idiomas value = null;
Session session = getSession();
value = (Idiomas) session.load(Idiomas.class, id);
return value;
}
/** auto generated
* @es_generated
*/
public List findByCriteria(SearchCriteria criteria) {
List values = null;
Session session = getSession();
Criteria crit = getHBCriteria(session, criteria);
if (criteria.startFrom < criteria.maxResults && criteria.startFrom > -1) {
crit.setFirstResult(criteria.startFrom);
crit.setMaxResults(criteria.maxResults - criteria.startFrom);
}
values = crit.list();
return values;
}
/** auto generated
* @es_generated
*/
private Criteria getHBCriteria(Session session, SearchCriteria criteria) {
Criteria newCriteria = session.createCriteria(Idiomas.class);
if (criteria.getId() != null) {
newCriteria.add(Restrictions.eq("id", criteria.getId()));
}
if ((criteria.ascending != null) && (criteria.ascending.contains("id")))
newCriteria.addOrder(Order.asc("id"));
else if ((criteria.descending != null)
&& (criteria.descending.contains("id")))
newCriteria.addOrder(Order.desc("id"));
if (criteria.getNome() != null) {
newCriteria.add(Restrictions.eq("nome", criteria.getNome()));
}
if ((criteria.ascending != null)
&& (criteria.ascending.contains("nome")))
newCriteria.addOrder(Order.asc("nome"));
else if ((criteria.descending != null)
&& (criteria.descending.contains("nome")))
newCriteria.addOrder(Order.desc("nome"));
return newCriteria;
}
/** auto generated
* @es_generated
*/
public void insert(Idiomas value) {
Session session = getSession();
session.save(value);
}
/** auto generated
* @es_generated
*/
public void update(Idiomas value) {
Session session = getSession();
session.update(value);
}
/** auto generated
* @es_generated
*/
public Idiomas merge(Idiomas value) {
Idiomas newValue = null;
Session session = getSession();
newValue = (Idiomas) session.merge(value);
return newValue;
}
/** auto generated
* @es_generated
*/
public void delete(Idiomas value) {
Session session = getSession();
session.refresh(value, LockMode.UPGRADE);
session.delete(value);
}
/** auto generated
* @es_generated
*/
public void delete(Integer id) {
Idiomas value = getById(id);
Session session = getSession();
if (value != null) {
session.refresh(value, LockMode.UPGRADE);
session.delete(value);
}
}
}
IdiomaBean.java (Managed Bean)
public class IdiomaBean {
private Idiomas idiomaCorrente = new Idiomas();
public Idiomas getIdiomaCorrente() {
return idiomaCorrente;
}
public void setIdiomaCorrente(Idiomas idiomaCorrente) {
this.idiomaCorrente = idiomaCorrente;
}
public String inserirIdioma() {
IdiomasDAO idioma = new IdiomasDAOImpl();
idioma.insert(getIdiomaCorrente());
return null;
}
}
cadastrarIdioma.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head>
<title></title>
</head>
<body>
<f:view>
<h:form id="cadIdioma">
<h:panelGrid columns="1">
<h:panelGroup>
<h:outputLabel value="Idioma: " for="idioma" />
<h:inputText id="idioma" value="#{idiomaBean.idiomaCorrente.nome}" />
</h:panelGroup>
<br />
<h:commandButton action="#{idiomaBean.inserirIdioma}" value="cadastrar" />
</h:panelGrid>
</h:form>
</f:view>
</body>
</html>
Bom, esses são os arquivos que to usando quando tento cadastrar um idioma, mas ao tentar cadastrar dá um erro que é o seguinte:
javax.servlet.ServletException: #{idiomaBean.inserirIdioma}: javax.faces.el.EvaluationException: java.lang.NullPointerException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
Eu estou postando isso porque estou bem perdido e não estou sabendo o que fazer (hehehee) se alguem puder me ajudar, espero ter sido claro.
ps.: Estou me baseando em um exemplo que está mais ou menos parecido e que funcionou perfeitamente.