>
Meu amigo estou com um problema, eu fiz tudo conforme demonstrado na Video-aula 3, contrui minhas classes Cliente, DAO, ClienteDAO, meu arquivo persistence.xml e meu index.jsp, ja fiz e refiz meu projeto tanto com Mysql quanto PostgreSQL e não FUNCIONA.
OBS: Estou utilizando os jar que baixei do projeto Hibernate-Basico-Fonte.zip
Segue abaixao a imagem do erro e tambem o codigo das minhas classes:
persistence.xml
[XML]
[/XML]
HTML
index.jsp
<%@page import="DAO.ClienteDAO"%>
<%@page import="MODEL.Cliente"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
package MODEL;
import javax.annotation.Generated;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="cliente")
public class Cliente {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@Column(name="id")
private int id;
@Column(name="nome")
private String nome;
@Column(name="endereco")
private String endereco;
@Column(name="numero")
private String numero;
@Column(name="bairro")
private String bairro;
@Column(name="telefone")
private String telefone;
public Cliente(){
}
/* -- Get e Set -- */
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
}
package DAO;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.LogicalExpression;
import org.hibernate.criterion.Restrictions;
import MODEL.Cliente;
public class ClienteDAO extends DAO {
public void salvar(Cliente cliente){
EntityManager em = getEntityManager();
try{
em.getTransaction().begin();
em.persist(cliente);
em.getTransaction().commit();
}catch (Exception e) {
em.getTransaction().rollback();
}
}
public Cliente getById(int idCliente){
EntityManager em = getEntityManager();
return em.find(Cliente.class, idCliente);
}
public void update(Cliente cliente){
EntityManager em = getEntityManager();
try{
em.getTransaction().begin();
Cliente c = em.find(Cliente.class, cliente.getId());
c.setNome(cliente.getNome());
c.setEndereco(cliente.getEndereco());
c.setNumero(cliente.getNumero());
c.setBairro(cliente.getBairro());
c.setTelefone(cliente.getTelefone());
em.getTransaction().commit();
} catch(Exception e){
em.getTransaction().rollback();
}
}
public void delete(Cliente cliente){
EntityManager em = getEntityManager();
try{
em.getTransaction().begin();
Cliente c = em.find(Cliente.class, cliente.getId());
em.remove(c);
em.getTransaction().commit();
} catch(Exception e){
em.getTransaction().rollback();
}
}
public List exibir_by_name(String nome){
EntityManager em = getEntityManager();
Criteria criteria = getSession().createCriteria(Cliente.class);
//criteria.add(Restrictions.eq("nome", "Rafael"));
//criteria.add(Restrictions.like("nome", "%R%"));
//criteria.add(Restrictions.gt("ordem", 0));
//gt() : maior que
//ge() : maior ou igual que
//lt() : menor que
//le() : menor ou igual que
//Criterion cr1 = Restrictions.like("nome", "%R%");
//Criterion cr2 = Restrictions.like("nome", "%T%");
//LogicalExpression exp = Restrictions.or(cr1, cr2);
//criteria.add(exp);
criteria.add(Restrictions.like("nome", "%"+ nome +"%"));
return criteria.list();
}
public List exibir(){
EntityManager em = getEntityManager();
try{
Query q = em.createQuery("select object(c) from Cliente as c");
return q.getResultList();
} finally{
em.close();
}
}
}
package DAO;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.hibernate.Session;
import org.hibernate.ejb.EntityManagerImpl;
public class DAO {
private EntityManagerFactory fabCon;
public EntityManager getEntityManager(){
return fabCon.createEntityManager();
}
public DAO() {
fabCon = Persistence.createEntityManagerFactory("sistema");
}
public Session getSession(){
Session session = null;
if (getEntityManager().getDelegate() instanceof EntityManagerImpl) {
EntityManagerImpl entityManagerImpl = (EntityManagerImpl) getEntityManager().getDelegate();
return entityManagerImpl.getSession();
} else {
return (Session) getEntityManager().getDelegate();
}
}
}
Valdejanio
O erro é similar ao que mostro na última aula de complemento.
Peço que assista a ela.
Segui seu conselho assisti a ultima aula fiz todas correções sugeridas por vc mesmo assim continua dando errado mudou somente o erro vou te passar o imagem do erro:
Vou te enviar também o meu projeto sem as lib para vc analizar o que estou fazendo de errado.
Meu Projeto HibernateJSP.zip
Valdejanio
Poste o código do DAO e Cliente DAO usando as tags do fórum, assim, podemos verificar melhor.
Outra coisa que pode ser interessante: na página do curso online, você tem o fonte completo, peço que antes, compare o seu DAO e ClienteDAO com o fonte do curso.
Ficamos no seu aguardo
eu estava com o mesmo erro que o teu mas:
}catch(Exception e){
//em.getTransaction().rollback();
}
tava pesquisando na net e li que poderia ser erro nessa linha, entao comentei ela e funcionou!(nao sei pq)