Problema ao configurar classe no hibernate

5 respostas
D

Estou com o seguinte problema na aplicação que estou fazendo:

10/08/2012 21:36:01 org.hibernate.cfg.annotations.Version clinit
INFO: Hibernate Annotations 3.3.1.GA
10/08/2012 21:36:01 org.hibernate.cfg.Environment clinit
INFO: Hibernate 3.2.5
10/08/2012 21:36:01 org.hibernate.cfg.Environment clinit
INFO: hibernate.properties not found
10/08/2012 21:36:01 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
10/08/2012 21:36:01 org.hibernate.cfg.Environment clinit
INFO: using JDK 1.4 java.sql.Timestamp handling
10/08/2012 21:36:01 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
10/08/2012 21:36:01 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: /hibernate.cfg.xml
10/08/2012 21:36:01 org.hibernate.util.XMLHelper$ErrorLogger error
SEVERE: Error parsing XML: /hibernate.cfg.xml(15) Element type hibernate-mapping must be declared.
10/08/2012 21:36:01 org.hibernate.util.XMLHelper$ErrorLogger error
SEVERE: Error parsing XML: /hibernate.cfg.xml(33) The content of element type session-factory must match (property*,mapping*,(class-cache|collection-cache)*,event*,listener*).
10/08/2012 21:36:01 br.tcc.marcenaria.marcenariaJF init
SEVERE: null
org.hibernate.MappingException: invalid configuration
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1487)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:990)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:69)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:972)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:69)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:966)
at br.tcc.DAO.ControllerDAO.init(ControllerDAO.java:99)
at br.tcc.marcenaria.marcenariaJF.init(marcenariaJF.java:37)
at br.tcc.marcenaria.Marcenaria.main(Marcenaria.java:13)
Caused by: org.xml.sax.SAXParseException: Element type hibernate-mapping must be declared.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1929)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:764)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1484)
... 10 more

Estou com o seguinte problema na aplicação que estou fazendo:

10/08/2012 21:36:01 org.hibernate.cfg.annotations.Version clinit
INFO: Hibernate Annotations 3.3.1.GA
10/08/2012 21:36:01 org.hibernate.cfg.Environment clinit
INFO: Hibernate 3.2.5
10/08/2012 21:36:01 org.hibernate.cfg.Environment clinit
INFO: hibernate.properties not found
10/08/2012 21:36:01 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
10/08/2012 21:36:01 org.hibernate.cfg.Environment clinit
INFO: using JDK 1.4 java.sql.Timestamp handling
10/08/2012 21:36:01 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
10/08/2012 21:36:01 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: /hibernate.cfg.xml
10/08/2012 21:36:01 org.hibernate.util.XMLHelper$ErrorLogger error
SEVERE: Error parsing XML: /hibernate.cfg.xml(15) Element type hibernate-mapping must be declared.
10/08/2012 21:36:01 org.hibernate.util.XMLHelper$ErrorLogger error
SEVERE: Error parsing XML: /hibernate.cfg.xml(33) The content of element type session-factory must match (property*,mapping*,(class-cache|collection-cache)*,event*,listener*).
10/08/2012 21:36:01 br.tcc.marcenaria.marcenariaJF init
SEVERE: null
org.hibernate.MappingException: invalid configuration
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1487)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:990)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:69)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:972)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:69)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:966)
at br.tcc.DAO.ControllerDAO.init(ControllerDAO.java:99)
at br.tcc.marcenaria.marcenariaJF.init(marcenariaJF.java:37)
at br.tcc.marcenaria.Marcenaria.main(Marcenaria.java:13)
Caused by: org.xml.sax.SAXParseException: Element type hibernate-mapping must be declared.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1929)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:764)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1484)
... 10 more

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost/marcenaria_tcc</property>
    <property name="hibernate.default_schema">marcenaria_tcc</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">root</property>
    
    
    <mapping class="br.tcc.cadastros.maodeobra.MaoDeObra"/>
    <mapping class="br.tcc.cadastros.ferragem.Ferragem"/>
    <mapping class="br.tcc.cadastros.madeira.Madeira"/>
    <mapping class="br.tcc.cadastros.tabua.Tabua"/>
    <mapping class="br.tcc.cadastros.modelo.Modelo"/>
    <mapping class="br.tcc.pessoa.Pessoa"/>
    <mapping class="br.tcc.estoque.Estoque"/>
    <mapping class="br.tcc.fornecedor.Fornecedor"/>
    <mapping class="br.tcc.pessoa.endereco.Endereco"/>
    <mapping class="br.tcc.cadastros.modelo.configuracao.ModeloConfiguracao"/>
    <mapping class="br.tcc.cadastros.modelo.configuracao.ModeloConfItem"/>
    <mapping class="br.tcc.agenda.Agenda"/>
    <mapping class="br.tcc.processo.movimento.Movimento"/>
    <mapping class="br.tcc.processo.orcamento.Orcamento"/>
    <mapping class="br.tcc.processo.orcamento.OrcamentoModelo"/>
    <mapping class="br.tcc.processo.orcamento.OrcamentoModeloConf"/>
    <mapping class="br.tcc.processo.pedido.Pedido"/>
  </session-factory>
</hibernate-configuration>

5 Respostas

wagnerfrancisco

Qual o código que você está utilizado para iniciar o hibernate?

D

Pra ativar uso o seguinte código

this.ieClasse = ieClasse;
       configuration = new AnnotationConfiguration();
       switch (ieClasse) {
           case 0:
               configuration.addAnnotatedClass(Madeira.class);
               break;
           case 1:
               configuration.addAnnotatedClass(Tabua.class);
               break;
           case 2:
               configuration.addAnnotatedClass(Ferragem.class);
               break;
           case 3:
               configuration.addAnnotatedClass(MaoDeObra.class);
               break;
           case 4:
               configuration.addAnnotatedClass(Modelo.class);
               break;
           case 5:
               configuration.addAnnotatedClass(Pessoa.class);
               break;
           case 6:
               configuration.addAnnotatedClass(Endereco.class);
               break;
           case 7:
               configuration.addAnnotatedClass(Fornecedor.class);
               break;
           case 8:
               configuration.addAnnotatedClass(Estoque.class);
               break;
           case 9:
               configuration.addAnnotatedClass(Agenda.class);
               break;
           case 10:
               configuration.addAnnotatedClass(Orcamento.class);
               break;
           case 11:
               configuration.addAnnotatedClass(Pedido.class);
               break;
           case 12:
               configuration.addAnnotatedClass(Movimento.class);
               break;
           case 13:
               configuration.addAnnotatedClass(ModeloConfiguracao.class);
               break;
           case 14:
               configuration.addAnnotatedClass(ModeloConfItem.class);
               break;
           case 15:
               configuration.addAnnotatedClass(OrcamentoModelo.class);
               break;
           case 16:
               configuration.addAnnotatedClass(OrcamentoModeloConf.class);
               break;
           default:
               break;
       }
       configuration.configure();
       factory = configuration.buildSessionFactory();

As variáveis que utilizo são destes tipos:

private SessionFactory factory;

private AnnotationConfiguration configuration;

private int ieClasse;
wagnerfrancisco

Não entendi qual é a lógica com a variável ieClass. De qualquer maneira, se você está especificando as classes no hibernate.cfg.xml, não precisa usar o addAnnotatedClass. Especifica só no xml.

Outro detalhe, por que você está usando hibernate 3.3.1? É tão antigo, até a API mudou. Use uma versão mais nova se puder. A versão 4, ou pelo menos a 3.6.*.

D

Estou tentando usar o Hibernate 4 agora, porém agora estou com o seguinte erro

8 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final

12/08/2012 13:05:07 org.hibernate.Version logVersion

INFO: HHH000412: Hibernate Core {4.1.5.SP1}

12/08/2012 13:05:07 org.hibernate.cfg.Environment 

INFO: HHH000206: hibernate.properties not found

12/08/2012 13:05:07 org.hibernate.cfg.Environment buildBytecodeProvider

INFO: HHH000021: Bytecode provider name : javassist

Exception in thread main java.lang.NoSuchMethodError: org.hibernate.cfg.AnnotationBinder.bindDefaults(Lorg/hibernate/cfg/Mappings;)V

at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1333)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1731)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1782)

at br.tcc.DAO.ControllerDAO.(ControllerDAO.java:153)

at br.tcc.marcenaria.marcenariaJF.(marcenariaJF.java:37)

at br.tcc.marcenaria.Marcenaria.main(Marcenaria.java:13)

Para iniciar estou usando:

configuration = new Configuration();

registry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();


configuration.setSessionFactoryObserver(new SessionFactoryObserver() {

            @Override
            public void sessionFactoryCreated(SessionFactory sf) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void sessionFactoryClosed(SessionFactory sf) {
                throw new UnsupportedOperationException("Not supported yet.");
            }
        });

factory = configuration.buildSessionFactory(registry);
wagnerfrancisco

Me parece que você ainda está com o jar do hibernate annotations (e uma versão antiga, a 3.2.0). Se for este o caso, remova o jar. A partir do hibernate 3.6 não precisa mais deste jar.

Criado 10 de agosto de 2012
Ultima resposta 12 de ago. de 2012
Respostas 5
Participantes 2