Ir ao conteúdo
  • Cadastre-se

Erro apresentado em programação em java + hibernate


Posts recomendados

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

 

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...