[RESOLVIDO] Capitulo 2 apostila k-19 JSF

12 respostas
getAdicted

Olá a todos,

galera, estou tentando estudar JSF nas minhas férias em cima da apostila K-19, no capitulo 2, eles ensinam a criar as tabelas através da seguinte classe:

public class GeraTabelas {
   public static void main(String[] args) {
   EntityManagerFactory factory =
 Persistence.createEntityManagerFactory("livraria");

  factory.close();
 }
 }

Mas estou recebendo a seguinte exception:

0 [main] INFO  org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.1-Final
16 [main] INFO  org.hibernate.cfg.Environment - Hibernate 3.5.1-Final
16 [main] INFO  org.hibernate.cfg.Environment - hibernate.properties not found
31 [main] INFO  org.hibernate.cfg.Environment - Bytecode provider name : javassist
31 [main] INFO  org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
187 [main] INFO  org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
203 [main] INFO  org.hibernate.ejb.Version - Hibernate EntityManager 3.5.1-Final
[Fatal Error] :1:7: The processing instruction target matching "[xX][mM][lL]" is not allowed.
Exception in thread "main" javax.persistence.PersistenceException: Invalid persistence.xml.
Error parsing XML (line1 : column 7): The processing instruction target matching "[xX][mM][lL]" is not allowed.

        at org.hibernate.ejb.packaging.PersistenceXmlLoader.loadURL(PersistenceXmlLoader.java:145)
        at org.hibernate.ejb.packaging.PersistenceXmlLoader.deploy(PersistenceXmlLoader.java:168)
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:310)
        at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:55)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
        at modelo.GeraTabelas.main(GeraTabelas.java:17)

log4j.properties:

log4j.rootCategory=INFO, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%r [%t] %-5p %c - %m%n

persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd" version="1.0">

    <persistence-unit name="livraria" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <property name="hibernate.hbm2ddl.auto" value="create"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value=""/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/livraria"/>
        </properties>
    </persistence-unit>

</persistence>

Editora.java:

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

/**
 *
 * @author HOUSE
 */
@Entity
public class Editora {

    @Id
    @GeneratedValue
    private Long id;
    private String nome;
    private String email;

    public void setEmail(String email) {
        this.email = email;
    }

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

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEmail() {
        return email;
    }

    public Long getId() {
        return id;
    }

    public String getNome() {
        return nome;
    }

}

Eu poderia muito bem criar as tabelas na unha, mas estou querendo seguir a apostila ao pé da letra :).

Em anexo os jars que estou utilizando.

Nem debugar eu consígo, esse arquivo properties é novo para mim. Alguém já passou por isso, poderia dar uma força?

VALEU!!!

12 Respostas

getAdicted

Alguem, manos?

altitdb

Você criou o banco “livraria” ?

Colocou todas as libs do Hibernate? Até aquelas opcionais?

xD~~

getAdicted

Obrigado pela atenção.

Vou fazer isso, então, vou adicionar todos os jars do hibernate-distribution-3.5.1-Final.

VALEU!

getAdicted

Já fiz isso, e tenho sim, um banco “livraria”…

mas valeu!

[]'s

getAdicted

Agora não está dando mais a exception, mas alguém saberia me dizer se o procedimento acima já deveria criar tabela “editora” ou devo cria-la pela classe Persistence? :slight_smile:

getAdicted

Pessoal,

Agora não está mais dando erro, entretanto, nenhuma tabela é criada, alguém poderia ajudar?

J

Está faltando tu colocar o mapeamento das classes. Tu precisa declarar as classes que são mapeadas por essa unidade de persistencia.
Procura no google exemplo que encontra facil.

getAdicted

Obrigado pela atenção Jaziel,

O mapeamento é feito no persistence.xml? Por que eu segui a risca o que diz na apostila.

[]'s

sergiolopes

O que vai fazer a geração das tabelas é aquela propriedade "hibernate.hbm2ddl.auto" como "create" - ou então deixe como "update", eu prefiro (aí ele cria caso não exista e atualiza caso tenham modificações).

Para saber quais tabelas gerar, ele vai atrás das entidades. Você precisa ter criado suas classes e anotado com @Entity em cima (javax.persistence.Entity) e ter configurado a classe no XML. Dentro do <persistence-unit> do XML, você cria uma tag <class> com o nome completo da classe. Algo assim:

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;persistence 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_1_0.xsd" version="1.0"&gt;

    &lt;persistence-unit name="livraria" transaction-type="RESOURCE_LOCAL"&gt;
        &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
        &lt;class&gt;br.com.exemplo.MinhaEntidade&lt;/class&gt;

        &lt;properties&gt;
            &lt;property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/&gt;
            &lt;property name="hibernate.hbm2ddl.auto" value="create"/&gt;
            &lt;property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/&gt;
            &lt;property name="javax.persistence.jdbc.user" value="root"/&gt;
            &lt;property name="javax.persistence.jdbc.password" value=""/&gt;
            &lt;property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/livraria"/&gt;
        &lt;/properties&gt;
    &lt;/persistence-unit&gt;

&lt;/persistence&gt;
A

Também acho que isso possa corrigir:

getAdicted

André e Sergio muito obrigado,

Não tenho como testar agora por que estou no serviço, só na parte da noite.

Mas acredito que vou poder seguir com meus estudos, mais uma vez obrigado a vocês dois. :slight_smile:

Paz e saúde! Fiquem com deus.

[]'s

getAdicted

Mais uma vez obrigado a todos!

[]'s

Criado 28 de dezembro de 2010
Ultima resposta 29 de dez. de 2010
Respostas 12
Participantes 5