Problema com hibernate não faz consulta

4 respostas
C

Seguinte galera estou fazendo uma aplicação jsf onde eu tenho uma parte java aplication e outra jsf

a parte java aplication está dando erro toda vez que eu digito o código do produto que eu quero que seja exibido:

está é minha classe main:

eu só estou usando a opção 1 aue é para buscar o código.

antes de perguntarem todas as libs inclusive as do jsf então na pasta lib do webinf.

eu subi o web service para testar via soap

e quando eu insiro o código 1 que é o valor que eu populei o meu banco de dados com a tabela ele me volta este erro:

IWAB0135E An unexpected error has occurred.
java.net.ConnectException
Connection refused: connect
package com.fiap.nac20.main;

import java.io.Serializable;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.Scanner;

import com.fiap.nac20.bo.EstoqueBO;
import com.fiap.nac20.to.ProdutoTO;
import com.fiap.nac20.util.PropertySingleton;


public class TesteConsole implements Serializable {

	private static final long serialVersionUID = 1L;

	public static void main(String[] args) {


		Scanner entrada = new Scanner(System.in);

		int codProduto = 0;
		int cod = 0;
		
		EstoqueBO estoqueBO = new EstoqueBO();
		
		ProdutoTO produtoTO = new ProdutoTO();


		DateFormat dfmt = DateFormat.getDateInstance(DateFormat.MEDIUM);

		System.out.println(PropertySingleton.getInstance().get("nomeFilial") + " Data: " + dfmt.format(Calendar.getInstance().getTimeInMillis()));
		System.out.println(PropertySingleton.getInstance().get("endereco"));
		System.out.println();
		System.out.println("*************************************************");
		System.out.println();
		
		System.out.println("Escolha uma das opções abaixo:");
		System.out.println();
		System.out.println("1 - Pesquisar Produto");
		System.out.println("2 - Inclusão de Novo Produto");
		System.out.println("3 - Remoção de um produto");;
		System.out.println("4 - Listagem de Produtos");
		System.out.println("0 - Encerrar a Aplicação");
		System.out.println();
		System.out.println();
		System.out.println();
		System.out.println("Digite o Código da Opção Desejada: ");
		
		cod = entrada.nextInt();
		
		System.out.println("*************************************************");
		
		if (cod == 1){
			
			System.out.print("Pesquisar Produto:");
			System.out.println();
			System.out.println();
			System.out.println();			
			System.out.println("Digite o Código do Produto: ");
			codProduto = Integer.parseInt(entrada.next());
			
			System.out.println( codProduto );
			produtoTO = estoqueBO.consultarProduto(codProduto);			
			System.out.println("Descrição do Produto: " + produtoTO.getDescricao());
			
			DecimalFormat df = new DecimalFormat("R$ #,##0.00");
			
			System.out.println("Preco Unitario: " + df.format(produtoTO.getPreco()));
			System.out.println("Quantidade em Estoque: " + produtoTO.getQuantidade());
			System.out.println("Campanha Promocional: " + produtoTO.getCampanhaPromocional());
			System.out.println();
			System.out.println();
			System.out.println("Digite 6 para voltar ao Menu Princípal ou 0 para encerrar a aplicação");
			cod = entrada.nextInt();
			
			for (int i=0 ; i < 100 ; i++) {
				System.out.println();
			}
		
				

		entrada.close();

	}

}

este é o codigo de erro do console:

FIAP Data: 16/05/2013
Avenida Paulista

*************************************************

Escolha uma das opções abaixo:

1 - Pesquisar Produto
2 - Inclusão de Novo Produto
3 - Remoção de um produto
4 - Listagem de Produtos
0 - Encerrar a Aplicação



Digite o Código da Opção Desejada: 
1
*************************************************
Pesquisar Produto:


Digite o Código do Produto: 
1
1
Mai 16, 2013 1:10:45 PM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
Mai 16, 2013 1:10:45 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.1.9.Final}
Mai 16, 2013 1:10:45 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Mai 16, 2013 1:10:45 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Mai 16, 2013 1:10:46 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
Mai 16, 2013 1:10:46 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20
Mai 16, 2013 1:10:46 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000006: Autocommit mode: true
Mai 16, 2013 1:10:46 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000401: using driver [oracle.jdbc.OracleDriver] at URL [jdbc:oracle:thin:@localhost:1521:xe]
Mai 16, 2013 1:10:46 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000046: Connection properties: {user=Paulo, password=****, autocommit=true, release_mode=auto}
Mai 16, 2013 1:10:47 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
Mai 16, 2013 1:10:47 PM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
Mai 16, 2013 1:10:47 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
Mai 16, 2013 1:10:48 PM org.hibernate.tool.hbm2ddl.SchemaValidator validate
INFO: HHH000229: Running schema validator
Mai 16, 2013 1:10:48 PM org.hibernate.tool.hbm2ddl.SchemaValidator validate
INFO: HHH000102: Fetching database metadata
Mai 16, 2013 1:10:48 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: PAULO.ESTOQUE
Mai 16, 2013 1:10:48 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [preco, codigo_produto, quantidade, campanha_promocional, descricao]
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: CLIENTE_ORACLE] Unable to build EntityManagerFactory
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
	at com.fiap.nac20.dao.EntityManagerFactorySingleton.getInstance(EntityManagerFactorySingleton.java:20)
	at com.fiap.nac20.bo.EstoqueBO.consultarProduto(EstoqueBO.java:17)
	at com.fiap.nac20.main.TesteConsole.main(TesteConsole.java:65)
Caused by: org.hibernate.HibernateException: Missing column: codProduto in PAULO.ESTOQUE
	at org.hibernate.mapping.Table.validateColumns(Table.java:370)
	at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1275)
	at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:155)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:506)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
	at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
	... 7 more

este é o meu persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	<persistence-unit name="CLIENTE_ORACLE">	
		<provider>org.hibernate.ejb.HibernatePersistence</provider>		
		<properties>
			<property name="hibernate.show_sql" value="true"/>
			<property name="hibernate.hbm2ddl.auto" value="validate"/>
			<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
			<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
			<property name="javax.persistence.jdbc.user" value="Paulo"/>
			<property name="javax.persistence.jdbc.password" value="paulo1"/>
			<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
		</properties>	
	</persistence-unit>
</persistence>

e está é minha classe de negócio:

import javax.persistence.EntityManager;

import com.fiap.nac20.dao.EntityManagerFactorySingleton;
import com.fiap.nac20.dao.ProdutoDao;
import com.fiap.nac20.impl.ProdutoDaoImpl;
import com.fiap.nac20.to.ProdutoTO;

public class EstoqueBO {

	public ProdutoTO consultarProduto(int codProduto) {

		EntityManager em = EntityManagerFactorySingleton.getInstance().createEntityManager();

		ProdutoDao produtoDAO = new ProdutoDaoImpl(em);
		return produtoDAO.consultarProduto(codProduto);

	}

	public void adicionarProduto(ProdutoTO produtoTO) {

		EntityManager em = EntityManagerFactorySingleton.getInstance().createEntityManager();

		ProdutoDao produtoDAO = new ProdutoDaoImpl(em);
		produtoDAO.adicionarProduto(produtoTO);			

	}

	public ProdutoTO[] listarProdutos() {
		EntityManager em = EntityManagerFactorySingleton.getInstance().createEntityManager();

		ProdutoDao produtoDAO = new ProdutoDaoImpl(em);
		return produtoDAO.listarProdutos();

	}

	public void atualizarProduto(ProdutoTO produtoTO) {

		EntityManager em = EntityManagerFactorySingleton.getInstance().createEntityManager();

		ProdutoDao produtoDAO = new ProdutoDaoImpl(em);
		produtoDAO.atualizarProduto(produtoTO);

	}

	public void removerProduto(ProdutoTO produtoTO) {

		EntityManager em = EntityManagerFactorySingleton.getInstance().createEntityManager();

		ProdutoDao produtoDAO = new ProdutoDaoImpl(em);
		produtoDAO.removerProduto(produtoTO);

	}

	public String[] buscarTodasDescricoes(String descricao) {

		EntityManager em = EntityManagerFactorySingleton.getInstance().createEntityManager();

		ProdutoDao produtoDAO = new ProdutoDaoImpl(em);
		return produtoDAO.buscarTodasDescricoes(descricao);

	}

}

4 Respostas

drsmachado

Esta linha diz o que?

C

então mas olha o minha tabela aqui:

[url]https://skydrive.live.com/redir?resid=633FCD10AD31321B!1157&authkey=!AEZ72vVm_osEzvg[/url]

[img]https://skydrive.live.com/redir?resid=633FCD10AD31321B!1157&authkey=!AEZ72vVm_osEzvg[/img]

e para tirar dúvida aqui está minha classe TO:

@Entity
@Table(name="ESTOQUE")
public class ProdutoTO implements Serializable {

	private static final long serialVersionUID = 1L;

	public ProdutoTO() {

	}
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="codProduto", unique=true, nullable=false, precision=22)
	private int codigoProduto;
	
	@Column(name="descricao", nullable=false, length=100)
	private String descricao;
	
	@Column(name="quantidade", nullable=false, precision=22)
	private int quantidade;
	
	@Column(name="preco", nullable=false, precision=22)
	private double preco;
	
	@Column(name="campanhaPromocional", nullable=false, length=100)
	private String campanhaPromocional;

	public int getCodigoProduto() {
		return codigoProduto;
	}

	public void setCodigoProduto(int codigoProduto) {
		this.codigoProduto = codigoProduto;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public int getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}

	public double getPreco() {
		return preco;
	}

	public void setPreco(double preco) {
		this.preco = preco;
	}

	public String getCampanhaPromocional() {
		return campanhaPromocional;
	}

	public void setCampanhaPromocional(String campanhaPromocional) {
		this.campanhaPromocional = campanhaPromocional;
	}

	@Override
	public String toString() {
		return "ProdutoTO [codigoProduto=" + codigoProduto + ", descricao="
				+ descricao + ", quantidade=" + quantidade + ", preco=" + preco
				+ ", campanhaPromocional=" + campanhaPromocional + "]";
	}
C

Então ontem a noite descobri o problema

é o seguinte a anotação de classe estava com o @column com o name com um valor que eu queria e o campo da tabela tinha outro atá ai bl você até onde sei pode por o name que você quiser.

mas não. tive que por no name das anotações o mesmo nome de cada coluna da tabela do banco.

Problema resolvido.

drsmachado

carmipa:
Então ontem a noite descobri o problema

é o seguinte a anotação de classe estava com o @column com o name com um valor que eu queria e o campo da tabela tinha outro atá ai bl você até onde sei pode por o name que você quiser.

mas não. tive que por no name das anotações o mesmo nome de cada coluna da tabela do banco.

Problema resolvido.


Sempre tive que colocar o nome adequado da coluna no atributo name da anotação @Column.
Quando se usava XML era obrigatório o preenchimento deste atributo e, caso fosse diferente, realmente não funcionava.

Criado 16 de maio de 2013
Ultima resposta 18 de mai. de 2013
Respostas 4
Participantes 2