Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

could not read a hi value - you need to populate the table: hibernate_sequence

/*classe DAO*/
package br.com.senai.controle;

import javax.persistence.EntityManager;

public class OlimpiadaDAO<T> {

    private final Class<T> classe;

    //construtor da classe recebe a própria classe
    public OlimpiadaDAO(Class<T> classe){

        this.classe = classe;
    }

    //cria um método para adicionar um objeto
    public void adiciona(T t){

        //recupera o EntityManager
        EntityManager em = new OlimpiadaUtil().getEntityManager();

        //abre a transacao
        em.getTransaction().begin();

        //persiste o objeto (grava no banco)
        /*
         *neste caso foi o objeto passado no parâmetro 
         *
         */
        em.persist(t);

        //realiza commit encerra a transação salvando todos os dados
        em.getTransaction().commit();

        //fecha a entity manager
        em.close();

    }

}
6 respostas

Oi Aluno,

qual é a duvida/problema?

abs

Olá Nico, dar uma olhada neste post http://www.guj.com.br/java/317852-porque-ao-tentar-cadastrar-no-banco-cria-a-tabela-hibernate_sequence

essa é minha dúvida quandotento realizar um cadastro ele cria uma tabela hibernate_sequence no banco. e não realiza o cadastro.

Wildermarkes, então, como você percebeu seu problema é com JPA e não JSF. Como seu projeto é muito específico, achei excelente você ter postado no GUJ. Lá o pessoal gosta mesmo de se debruçar em problemas como o seu.

Porém, problemas como esse específicos do seu projeto não são resolvidos apenas olhando classes.. há várias coisas envolvidas.

Aqui no Alura a gente tenta ajudar sempre que possível, mas como disse, o GUJ é o lugar perfeito, aberto e que zilhões de devs podem olhar o seu código.

Para não deixá-lo sem uma resposta, quando você usa @GeneratedValue sem definir a estratégia de geração de ID no banco, o Provider do JPA (no seu caso Hibernate) escolherá a estratégia que ele achar melhor. Nem sempre é o que queremos.

Uma maneira neutra e genérica que você não terá dor de cabeça seja lá qual banco for é usar estratégia TABLE.

Você pode consultar a documentação JPA ou acessar esse link que tem uma explicação razoável:

http://www.summa-tech.com/blog/2011/07/29/setting-up-sequential-ids-using-jpa-tablegenerator

Espero ter ajudado. Quando algum hacker de projeto tirar sua dúvida lá, não deixe de postar aqui a solução.

Ta certo Flávio agradeço. Ainda estou esperando a solução. valeu pela dica.

solução!

Troquei todas as bibliotecas por uma versão anterior

antlr-2.7.7.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-core-4.1.8.Final.jar
hibernate-entitymanager-4.1.8.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-validator-4.3.0.Final.jar
javassist-3.15.0-GA.jar
javax.faces-2.1.14.jar
jboss-logging-3.1.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.0.Final.jar
mysql-connector-java-5.1.22-bin.jar
validation-api-1.0.0.GA.jar
`

incluindo o namespace

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">

xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"