Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
remazela

Erro apresentado em programação em java + hibernate

Recommended Posts

Caros amigos.

Estou escrevendo um sistema em JAVA usando Hibernate e me deparei com o seguinte problema, conforme mensagem de  falha ao tentar Criar o  SessionFactory.java.lang.NullPointerException .  NÃO ENTENDI.

 

Abaixo os códigos fonte que estou usando.

 

Venda.java

package br.com.farmacia.domain;

import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "tbl_vendas")
@NamedQueries({
	@NamedQuery(name = "Venda.listar", query = "SELECT venda FROM Venda venda"),
	@NamedQuery(name = "Venda.buscarPorCodigo", query = "SELECT Venda FROM Venda venda WHERE codigo = :codigo")
})

public class Venda {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "ven_codigo")
	private Long codigo;
    
    @Temporal(value = TemporalType.TIMESTAMP)
    @Column(name = "ven_horario", nullable = false)
    private Date horario;
    
    @Column(name = "ven_valor_total", precision = 7, scale = 2, nullable = false)
    private BigDecimal valor;
	
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "tbl_funcionarios_fun_codigo", referencedColumnName = "fun_codigo", nullable = false)
    private Funcionario funcionario;

	public Long getCodigo() {
		return codigo;
	}

	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	public Date getHorario() {
		return horario;
	}

	public void setHorario(Date horario) {
		this.horario = horario;
	}

	public BigDecimal getValor() {
		return valor;
	}

	public void setValor(BigDecimal valor) {
		this.valor = valor;
	}

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	@Override
	public String toString() {
		return "Venda [codigo=" + codigo + ", horario=" + horario + ", valor=" + valor 
				+ ", funcionario=" + funcionario + "]";
	}
    
}

VendaDAO.java

package br.com.farmacia.dao;

import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.farmacia.domain.Venda;
import br.com.farmacia.util.HibernateUtil;

public class VendaDAO {
	
	public void salvar(Venda venda){
        Session sessao = HibernateUtil.getSessionFactory().openSession();
		Transaction transacao = null;
        
		try {
			transacao = sessao.beginTransaction();
			sessao.save(venda);
			
			//Confirma a transação
			transacao.commit();
			
		} catch (RuntimeException ex) {
			
			//Se a Transação foi Iniciada
			if(transacao != null){
	           transacao.rollback();			
			}
			
			//Capturar o erro
			throw ex; 
			
		} finally {
		    sessao.close();			
		}		
	}

}

 

VendaDAOTest.java  -  neste código fonte, testo para ver se está salvando no banco de dados.

package br.com.farmacia.dao;

import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.farmacia.domain.Venda;
import br.com.farmacia.util.HibernateUtil;

public class VendaDAO {
	
	public void salvar(Venda venda){
        Session sessao = HibernateUtil.getSessionFactory().openSession();
		Transaction transacao = null;
        
		try {
			transacao = sessao.beginTransaction();
			sessao.save(venda);
			
			//Confirma a transação
			transacao.commit();
			
		} catch (RuntimeException ex) {
			
			//Se a Transação foi Iniciada
			if(transacao != null){
	           transacao.rollback();			
			}
			
			//Capturar o erro
			throw ex; 
			
		} finally {
		    sessao.close();			
		}		
	}

}

 

Após testar dá o seguinte erro no console que não consigo identificar onda está o erro.

Console

jun 04, 2016 3:06:34 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
jun 04, 2016 3:06:34 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.11.Final}
jun 04, 2016 3:06:34 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
jun 04, 2016 3:06:34 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
jun 04, 2016 3:06:34 PM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
jun 04, 2016 3:06:34 PM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
jun 04, 2016 3:06:34 PM org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
jun 04, 2016 3:06:34 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!)
jun 04, 2016 3:06:34 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/db_farmacia]
jun 04, 2016 3:06:34 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000046: Connection properties: {user=root, password=****}
jun 04, 2016 3:06:34 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000006: Autocommit mode: false
jun 04, 2016 3:06:34 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 1 (min=1)
jun 04, 2016 3:06:34 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
jun 04, 2016 3:06:34 PM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000399: Using default transaction strategy (direct JDBC transactions)
jun 04, 2016 3:06:34 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
jun 04, 2016 3:06:35 PM org.hibernate.tool.hbm2ddl.SchemaValidator validate
INFO: HHH000229: Running schema validator
jun 04, 2016 3:06:35 PM org.hibernate.tool.hbm2ddl.SchemaValidator validate
INFO: HHH000102: Fetching database metadata
jun 04, 2016 3:06:35 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: db_farmacia.tbl_fabricantes
jun 04, 2016 3:06:35 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [fab_descricao, fab_codigo]
jun 04, 2016 3:06:35 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: db_farmacia.tbl_funcionarios
jun 04, 2016 3:06:35 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [fun_cpf, fun_nome, fun_senha, fun_codigo, fun_funcao]
jun 04, 2016 3:06:35 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: db_farmacia.tbl_itens
jun 04, 2016 3:06:35 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [tbl_vendas_ven_codigo, ite_valor_parcial, tbl_produtoss_pro_codigo, ite_quantidade, ite_codigo]
jun 04, 2016 3:06:35 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: db_farmacia.tbl_produtos
jun 04, 2016 3:06:35 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [pro_codigo, tbl_fabricantes_fab_codigo, pro_descricao, pro_quantidade, pro_preco]
jun 04, 2016 3:06:35 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: db_farmacia.tbl_vendas
jun 04, 2016 3:06:35 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [ven_horario, tbl_funcionarios_fun_codigo, ven_valor_total, ven_codigo]
Falha ao tentar Criar o SessionFactory.java.lang.NullPointerException

 

Alguém por favor, poderia me ajudar ?

 

Grato,

 

Renato

Amigos, o código fonte correto do VendaDAOTest.java é o abaixo:

package br.com.farmacia.test;

import java.math.BigDecimal;
import java.util.Date;

import org.junit.Test;

import br.com.farmacia.dao.FuncionarioDAO;
import br.com.farmacia.dao.VendaDAO;
import br.com.farmacia.domain.Funcionario;
import br.com.farmacia.domain.Venda;

public class VendaDAOTest {

	@Test
	public void salvar(){
	    FuncionarioDAO funcionarioDAO = new FuncionarioDAO();
	    Funcionario funcionario = funcionarioDAO.buscarPorCodigo(5L);
	    
	    Venda venda = new Venda();
	    venda.setFuncionario(funcionario);
	    venda.setHorario(new Date());
	    venda.setValor(new BigDecimal(150.00D));
		
		VendaDAO vendaDAO = new VendaDAO();
		vendaDAO.salvar(venda);
		
	}
		
}

 

Desculpa o erro

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos

 

Agradeço a todos que visualizaram meu pedido de ajuda, mas consegui resolver o erro.

 

Nesta linha está o erro:

@ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "tbl_funcionarios_fun_codigo", referencedColumnName = "fun_codigo", nullable = false)
    private Funcionario funcionario;

Não prestei atenção mas na base do banco de dados havia digitado errado a chave estrangeira, ou seja:

digitado na base de dados:  "tbl_funcionarios_fun_condigo" (por causa de uma letrinha (n) deu erros.

o correto é...........................:  "tbl_funcionarios_fun_codigo"

 

Grato a todos.

 

Atenciosamente,

 

Renato

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×