Iniciante Hibernate 3.6

5 respostas
P

Boa Tarde Pessoal,

Estou com problemas no tutorial do Hibernate 3.6 conforme o link http://docs.jboss.org/hibernate/core/3.6/reference/pt-BR/html/tutorial.html .

Vou usar em uma aplicação web posteriormente (primeiro tenho que saber usar ).

Segue erro, classes e cfg.

11/02/2011 16:44:54 org.hibernate.annotations.common.Version <clinit>
INFO: Hibernate Commons Annotations 3.2.0.Final
11/02/2011 16:44:54 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.6.1.Final
11/02/2011 16:44:54 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
11/02/2011 16:44:54 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : javassist
11/02/2011 16:44:54 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
11/02/2011 16:44:54 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: hibernate.cfg.xml
11/02/2011 16:44:54 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: hibernate.cfg.xml
11/02/2011 16:44:54 org.hibernate.util.DTDEntityResolver resolveEntity
AVISO: recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
11/02/2011 16:44:54 org.hibernate.cfg.Configuration addResource
INFO: Reading mappings from resource : org/hibernate/tutorial/domain/Event.hbm.xml
11/02/2011 16:44:54 org.hibernate.util.DTDEntityResolver resolveEntity
AVISO: recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
11/02/2011 16:44:54 org.hibernate.util.xml.ErrorLogger error
GRAVE: Error parsing XML (3) : The markup in the document preceding the root element must be well-formed.
Initial SessionFactory creation failed.org.hibernate.InvalidMappingException: Unable to read XML
Exception in thread "main" java.lang.ExceptionInInitializerError
        at org.hibernate.tutorial.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:17)
        at org.hibernate.tutorial.util.HibernateUtil.<clinit>(HibernateUtil.java:8)
        at org.hibernate.tutorial.EventManager.createAndStoreEvent(EventManager.java:21)
        at org.hibernate.tutorial.EventManager.main(EventManager.java:15)
Caused by: org.hibernate.InvalidMappingException: Unable to read XML
        at org.hibernate.util.xml.MappingReader.readMappingDocument(MappingReader.java:101)
        at org.hibernate.cfg.Configuration.add(Configuration.java:510)
        at org.hibernate.cfg.Configuration.add(Configuration.java:506)
        at org.hibernate.cfg.Configuration.add(Configuration.java:686)
        at org.hibernate.cfg.Configuration.addResource(Configuration.java:771)
        at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2314)
        at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2280)
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2260)
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2213)
        at org.hibernate.cfg.Configuration.configure(Configuration.java:2128)
        at org.hibernate.tutorial.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
        ... 3 more
Caused by: org.dom4j.DocumentException: Error on line 3 of document  : The markup in the document preceding the root element must be well-formed. Nested exception: The markup in the document preceding the root element must be well-formed.
        at org.dom4j.io.SAXReader.read(SAXReader.java:482)
        at org.hibernate.util.xml.MappingReader.readMappingDocument(MappingReader.java:75)
        ... 13 more
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
package org.hibernate.tutorial;

import org.hibernate.Session;

import java.util.*;

import org.hibernate.tutorial.domain.Event;
import org.hibernate.tutorial.util.HibernateUtil;

public class EventManager {

    public static void main(String[] args) {
        EventManager mgr = new EventManager();

        mgr.createAndStoreEvent("My Event", new Date());

        HibernateUtil.getSessionFactory().close();
    }

    private void createAndStoreEvent(String title, Date theDate) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();

        Event theEvent = new Event();
        theEvent.setTitle(title);
        theEvent.setDate(theDate);
        session.save(theEvent);

        session.getTransaction().commit();
    }
}
package org.hibernate.tutorial.domain;

import java.util.Date;

public class Event {

    private Long id;
    private String title;
    private Date date;

    public Event() {
    }

    public Long getId() {
        return id;
    }

    private void setId(Long id) {
        this.id = id;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}
package org.hibernate.tutorial.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<<hibernate-mapping package="org.hibernate.tutorial.domain">
<class name="Event" table="EVENTS">
    <id name="id" column="EVENT_ID">
        <generator class="native"/>
    </id>
</class>
<property name="date" type="timestamp" column="EVENT_DATE"/>
<property name="title"/>
</hibernate-mapping>
<?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.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/TESTE</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">1421</property>
        <property name="connection.pool_size">1</property>
        <property name="current_session_context_class">thread</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">update</property>
        <mapping resource="org/hibernate/tutorial/domain/Event.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

Lembro que so tenho a DB criada no mysql e nenhuma tabela, quero que o hibernate crie para mim.

Desde já obrigado

5 Respostas

V

Desculpe meu amigo, naum consegui entender bem a dua dúvida, pois o Hibernate ñ cria nada pra vc. vc tem que criar os bens da vida fazer o mapeamento dele através do xml ( eu naum vi isso no seu exemplo) e o DAO. Não esqueça de verificar os campos do BD todos eles tem que bater com os seus atributos. Sem esquecer do mapeamento do Hibernate.

R

A terceira linha do arquivo de mapeamento da classe Event está começando com dois caracteres “<” quando deveria começar com um só. Em vez de “<<hibernate-mapping”, deveria ser “<hibernate-mapping”.

P

@Vandinho
Quero que ele crie as tabelas e entidades para mim.

@roger
arrumei essa parte porem agora da esse erro.

11/02/2011 17:49:06 org.hibernate.annotations.common.Version <clinit>
INFO: Hibernate Commons Annotations 3.2.0.Final
11/02/2011 17:49:06 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.6.1.Final
11/02/2011 17:49:06 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
11/02/2011 17:49:06 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : javassist
11/02/2011 17:49:06 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
11/02/2011 17:49:06 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: hibernate.cfg.xml
11/02/2011 17:49:06 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: hibernate.cfg.xml
11/02/2011 17:49:06 org.hibernate.util.DTDEntityResolver resolveEntity
AVISO: recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
11/02/2011 17:49:06 org.hibernate.cfg.Configuration addResource
INFO: Reading mappings from resource : org/hibernate/tutorial/domain/Event.hbm.xml
11/02/2011 17:49:06 org.hibernate.util.DTDEntityResolver resolveEntity
AVISO: recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
11/02/2011 17:49:06 org.hibernate.util.xml.ErrorLogger error
GRAVE: Error parsing XML (11) : The content of element type "hibernate-mapping" must match "(meta*,identifier-generator*,typedef*,filter-def*,import*,(class|subclass|joined-subclass|union-subclass)*,resultset*,(query|sql-query)*,filter-def*,fetch-profile*,database-object*)".
11/02/2011 17:49:06 org.hibernate.util.DTDEntityResolver resolveEntity
AVISO: recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
11/02/2011 17:49:06 org.hibernate.util.xml.ErrorLogger error
GRAVE: Error parsing XML (2) : The content of element type "hibernate-mapping" must match "(meta*,identifier-generator*,typedef*,filter-def*,import*,(class|subclass|joined-subclass|union-subclass)*,resultset*,(query|sql-query)*,filter-def*,fetch-profile*,database-object*)".
Initial SessionFactory creation failed.org.hibernate.InvalidMappingException: Unable to read XML
Exception in thread "main" java.lang.ExceptionInInitializerError
        at org.hibernate.tutorial.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:17)
        at org.hibernate.tutorial.util.HibernateUtil.<clinit>(HibernateUtil.java:8)
        at org.hibernate.tutorial.EventManager.createAndStoreEvent(EventManager.java:21)
        at org.hibernate.tutorial.EventManager.main(EventManager.java:15)
Caused by: org.hibernate.InvalidMappingException: Unable to read XML
        at org.hibernate.util.xml.MappingReader.readMappingDocument(MappingReader.java:101)
        at org.hibernate.cfg.Configuration.add(Configuration.java:510)
        at org.hibernate.cfg.Configuration.add(Configuration.java:506)
        at org.hibernate.cfg.Configuration.add(Configuration.java:686)
        at org.hibernate.cfg.Configuration.addResource(Configuration.java:771)
        at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2314)
        at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2280)
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2260)
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2213)
        at org.hibernate.cfg.Configuration.configure(Configuration.java:2128)
        at org.hibernate.tutorial.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
        ... 3 more
Caused by: org.xml.sax.SAXParseException: The content of element type "hibernate-mapping" must match "(meta*,identifier-generator*,typedef*,filter-def*,import*,(class|subclass|joined-subclass|union-subclass)*,resultset*,(query|sql-query)*,filter-def*,fetch-profile*,database-object*)".
        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.handleEndElement(XMLDTDValidator.java:2017)
        at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:901)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2938)
        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.util.xml.MappingReader.readMappingDocument(MappingReader.java:75)
        ... 13 more
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

O mapeamento ficou assim

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;
&lt;hibernate-mapping package="org.hibernate.tutorial.domain"&gt;
&lt;class name="Event" table="EVENTS"&gt;
    &lt;id name="id" column="EVENT_ID"&gt;
        &lt;generator class="native"/&gt;
    &lt;/id&gt;
&lt;/class&gt;
&lt;property name="date" type="timestamp" column="EVENT_DATE"/&gt;
&lt;property name="title"/&gt;
&lt;/hibernate-mapping&gt;
R

O arquivo de mapeamento da classe Event tem dois elementos “property” fora do elemento “class”, transfira-os para o local adequado.

P

opa funcionou certinho, muito obrigado mesmo

Criado 11 de fevereiro de 2011
Ultima resposta 11 de fev. de 2011
Respostas 5
Participantes 3