terça-feira, 24 de dezembro de 2013

[java-br] Hibernate DataSus

·

 

Pessoal Boa noite.
Estou fazendo um sistema para ler as tabela do banco de dados do sistema do datasus.
O mesmo está em D:\DATASUS\SISAIH01\SISAIH00.GD

Eu fiz uns testes com JDBC puro e consigo ler os dados das tabelas do mesmo.
Mas já bati a cabeça para tentar utilizar o Hibernate 4 para tentar acessar o mesmo.
Vou postar o arquivo de configuração e de classe que utilizo para fazer o mapeamento.
Esta é a classe Uf.java que tem que ser alimentada pela tabela TB_UF

package estudo.bean;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="TB_UF")
public class Uf implements Serializable {
private static final long serialVersionUID = -9013561194581930836L;
private String uf_sigla;
private String uf_cod_ibge;
private String uf_nome;
@Id
@Column(updatable = false, name = "UF_SIGLA", nullable = false, length=2)
public String getUf_sigla() {
return uf_sigla;
}
public void setUf_sigla(String uf_sigla) {
this.uf_sigla = uf_sigla;
}
@Column(updatable = false, name = "UF_COD_IBGE", nullable = true, length=2)
public String getUf_cod_ibge() {
return uf_cod_ibge;
}
public void setUf_cod_ibge(String uf_cod_ibge) {
this.uf_cod_ibge = uf_cod_ibge;
}
@Column(updatable = false, name = "UF_NOME", nullable = true, length=30)
public String getUf_nome() {
return uf_nome;
}
public void setUf_nome(String uf_nome) {
this.uf_nome = uf_nome;
}
}

E este é o arquivo persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<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"
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="datasus" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>estudo.bean.Uf</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.firebirdsql.jdbc.FBDriver" />
            
            <property name="javax.persistence.jdbc.url" value="jdbc:firebirdsql:localhost/3050:D:/DATASUS/SISAIH01/SISAIH00.GDB" />
            <property name="javax.persistence.jdbc.user" value="sysdba" />
            <property name="javax.persistence.jdbc.password" value="masterkey" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.InterbaseDialect" />
            <!--
            <property name="hibernate.dialect" value="org.hibernate.dialect.FirebirdDialect" /> 
            <property name="hibernate.hbm2ddl.auto" value="update" />
             -->
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

Quando rodo uma classe de teste utilizando um DAO, segue o dao
package estudo.dao;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import estudo.bean.Uf;

public class UfDAO {
protected EntityManager entityManager;
public UfDAO(){
entityManager = getEntityManager();
}
    
private EntityManager getEntityManager() {
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("datasus");
        if (entityManager == null) {
            entityManager = factory.createEntityManager();
        }
  return entityManager;
    }
@SuppressWarnings("unchecked")
public List<Uf> findAll() {
     return entityManager.createQuery("Select u from TB_UF u").getResultList();
}
 
public void fehcar(){
entityManager.close();
}
}
 e segue o teste
package estudo.teste;

import estudo.bean.Uf;
import estudo.dao.UfDAO;

public class TesteAih {
public static void main(String[] args) {
UfDAO dao = new UfDAO();
for(Uf pe : dao.findAll()){
            System.out.println(pe.getUf_sigla());
            System.out.println(pe.getUf_nome());
            System.out.println();
        }
}
}
Tenho como resposta a seguinte mensagem no console.
Dez 24, 2013 7:41:59 PM org.hibernate.ejb.HibernatePersistence logDeprecation
WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
Dez 24, 2013 7:41:59 PM org.hibernate.ejb.HibernatePersistence logDeprecation
WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
Dez 24, 2013 7:41:59 PM org.hibernate.ejb.HibernatePersistence logDeprecation
WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
Dez 24, 2013 7:41:59 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [
name: datasus
...]
Dez 24, 2013 7:41:59 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.0.Final}
Dez 24, 2013 7:41:59 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Dez 24, 2013 7:41:59 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Dez 24, 2013 7:41:59 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.4.Final}
Dez 24, 2013 7:41:59 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
Dez 24, 2013 7:41:59 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000401: using driver [org.firebirdsql.jdbc.FBDriver] at URL [jdbc:firebirdsql:localhost/3050:D:/DATASUS/SISAIH01/SISAIH00.GDB]
Dez 24, 2013 7:41:59 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000046: Connection properties: {user=sysdba, password=****}
Dez 24, 2013 7:41:59 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000006: Autocommit mode: false
Dez 24, 2013 7:41:59 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Dez 24, 2013 7:42:00 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.InterbaseDialect
Dez 24, 2013 7:42:00 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
Hibernate: 
    create table HT_TB_UF (UF_SIGLA varchar(2) not null, hib_sess_id CHAR(36))
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: TB_UF is not mapped [Select u from TB_UF u]
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1750)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:331)
at estudo.dao.UfDAO.findAll(UfDAO.java:25)
at estudo.teste.TesteAih.main(TesteAih.java:9)
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: TB_UF is not mapped [Select u from TB_UF u]
at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:96)
at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:120)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:234)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:190)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1796)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:328)
... 2 more
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: TB_UF is not mapped
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:189)
at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:109)
at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:95)
at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:331)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3554)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3443)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206)
... 10 more
Não sei mais o que fazer para utilizar o Hibernate para ler as tabelas.
Sei que se utilizar JDBC puro funciona.
Alguém teria alguma luz ou um norte para eu seguir?
Obrigado.
Jair Maia
skype - jairmaiask
Programador
Como podemos querer mudanças, se fazemos as mesmas coisas todos os dias?

__._,_.___
Atividade nos últimos dias:
Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br
.

__,_._,___

0 comentários:

Pague com LPs do Mister Colibri

Pague com LPs do Mister Colibri
Quer comprar celular,Tablet,pen drive, GPS e muito outros produtos e ainda podendo pagar tudo em LPs ?Pois saiba que isso é possível,basta você visitar o site downloadstotal.com e realizar a sua compra com toda tranquilidade e segurança!!!

Hora

Online

Arquivo do Blog