Estou seguindo a apostila loja virtual da Caelum i[/i], e empaquei em um problema com o Hibernate. O projeto até aqui compila, roda direitinho e até dá toda pinta que está gravando os dados no banco, mas o problema é que não grava nada.
Aparece o seguinte na saída (repare que no select solicitado abaixo ele até lista no caso o login e senha salvos no run atual, mas não é gravado nada no banco):
Provavelmente é porque você não está fazendo o commit().
Posta o código onde o save() é executado…
S
stone010
sakei… acabei não trazendo os fontes para o trampo, assim que chegar em casa eu posto o DAO… até!
H
heliortf
provavelmente no seu dao deve estar somente com o save(objeto);
só dar um commit(); que funciona.
S
stone010
Então… o problema é que mesmo chamando o “commit() : DaoFactory” num rolava. Na apostila não detalha exatamente a chamada ao commit(), então eu estava fazendo assim:
deveria não é Mark, tb acho cara… que será que ta pegando?
sei que incompatibilidade não é, pois já testei criando classes mais simples, e gravou no banco via hibernate através das mesmas configurações e versões que estou usando agora.
o que mais poderia ser?
Marky.Vasconcelos
Tem certeza que a base esta certa? Roda o SchemaUpdate sem exportar para o banco para ver se ele cria mais alguma tabela.
(execute(true,false)
S
stone010
parece que a este respeito está tudo certo Mark... bom resolvi refazer tudo para ver se dessa vez encontro onde possa estar esse erro, mas acabou empacando no mesmo lugar =s
dessa vez fui fazendo backup do projeto conforme fui implementando, e até a parte do processo das classes abaixo, roda e salva no banco, normal. Somente depois quando crio o DaoFactory que começa a dar pau.
TestaUsuario:
packagebr.com.caelum.lojavirtual.main;importjava.util.List;importorg.hibernate.*;importorg.hibernate.cfg.*;importbr.com.caelum.lojavirtual.dao.UsuarioDao;importbr.com.caelum.lojavirtual.modelo.Usuario;publicclassTestaUsuario{publicstaticvoidmain(String[]args){// configura o hibernateConfigurationconf=newAnnotationConfiguration();conf.configure();SessionFactoryfactory=conf.buildSessionFactory();Sessionsession=factory.openSession();// cria um usuarioUsuariou=newUsuario();u.setLogin("admin3");u.setSenha("admin3");UsuarioDaodao=newUsuarioDao(session);// abre transacao e insereTransactiont=session.beginTransaction();dao.adiciona(u);t.commit();// lista usuariosList<Usuario>lista=dao.listaTudo();for(Usuariousuario:lista){System.out.println(usuario.getLogin());}session.close();}}
Daí qdo faço a refatoração e crio o DaoFactory que postei anteriormente acontece o mesmo problema: na saída, lista os setLogin() : Usuario que já estão no banco, mais o Usuario que acabei de incluir no TestaUsuario, mas não grava no banco este ultimo (só apresenta a lista mesmo).
S
stone010
além do que, a guia “problems” do Eclipse acusa o seguinte problema:
No persistence.xml file found in project | lojavirtual | Unknown | JPA Problem Marker
eu tenho que ter esse persistence.xml no meu META-INF?
S
stone010
ainda nem consegui gente… está tudo certo? pq será que não grava?
C
ChRoNoS_BR
amigo, estava com o mesmo problema, e resolvi ontem a noite ( tive a ideia no banho XD )