Hibernate dá o insert, mas o dado não é inserido

8 respostas
D

E ai pessoal, tudo bem? estou com um problema aqui, e não sei como resolver =\
é q o hibernate não tá salvando as contas.
Ele dá o insert no banco de dados, mas não insere.
Aqui tá o Debug

20:59:27.013 [http-bio-8080-exec-2] DEBUG org.hibernate.impl.SessionImpl - opened session at timestamp: [telefone removido]
20:59:27.014 [http-bio-8080-exec-2] DEBUG o.h.transaction.JDBCTransaction - begin
20:59:27.014 [http-bio-8080-exec-2] DEBUG org.hibernate.jdbc.ConnectionManager - opening JDBC connection
20:59:27.014 [http-bio-8080-exec-2] DEBUG o.h.transaction.JDBCTransaction - current autocommit status: true
20:59:27.014 [http-bio-8080-exec-2] DEBUG o.h.transaction.JDBCTransaction - disabling autocommit
20:59:27.014 [http-bio-8080-exec-2] DEBUG o.s.security.web.FilterChainProxy - /restrito/conta.jsf at position 1 of 10 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter'
20:59:27.014 [http-bio-8080-exec-2] DEBUG o.s.s.w.c.HttpSessionSecurityContextRepository - Obtained a valid SecurityContext from SPRING_SECURITY_CONTEXT: 'org.springframework.security.core.context.SecurityContextImpl@5e687b94: Authentication: org.springframework.security.authentication.UsernamePasswordAuthenticationToken@5e687b94: Principal: org.springframework.security.core.userdetails.User@34bf8c6f: Username: dennisbf; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USUARIO; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@1c07a: RemoteIpAddress: 127.0.0.1; SessionId: 670ABE1C0A0E43B9F67C63B7383C7176; Granted Authorities: ROLE_USUARIO'
20:59:27.014 [http-bio-8080-exec-2] DEBUG o.s.security.web.FilterChainProxy - /restrito/conta.jsf at position 2 of 10 in additional filter chain; firing Filter: 'LogoutFilter'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.security.web.FilterChainProxy - /restrito/conta.jsf at position 3 of 10 in additional filter chain; firing Filter: 'UsernamePasswordAuthenticationFilter'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.security.web.FilterChainProxy - /restrito/conta.jsf at position 4 of 10 in additional filter chain; firing Filter: 'RequestCacheAwareFilter'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.security.web.FilterChainProxy - /restrito/conta.jsf at position 5 of 10 in additional filter chain; firing Filter: 'SecurityContextHolderAwareRequestFilter'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.security.web.FilterChainProxy - /restrito/conta.jsf at position 6 of 10 in additional filter chain; firing Filter: 'RememberMeAuthenticationFilter'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.s.w.a.r.RememberMeAuthenticationFilter - SecurityContextHolder not populated with remember-me token, as it already contained: 'org.springframework.security.authentication.UsernamePasswordAuthenticationToken@5e687b94: Principal: org.springframework.security.core.userdetails.User@34bf8c6f: Username: dennisbf; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USUARIO; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@1c07a: RemoteIpAddress: 127.0.0.1; SessionId: 670ABE1C0A0E43B9F67C63B7383C7176; Granted Authorities: ROLE_USUARIO'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.security.web.FilterChainProxy - /restrito/conta.jsf at position 7 of 10 in additional filter chain; firing Filter: 'AnonymousAuthenticationFilter'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - SecurityContextHolder not populated with anonymous token, as it already contained: 'org.springframework.security.authentication.UsernamePasswordAuthenticationToken@5e687b94: Principal: org.springframework.security.core.userdetails.User@34bf8c6f: Username: dennisbf; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USUARIO; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@1c07a: RemoteIpAddress: 127.0.0.1; SessionId: 670ABE1C0A0E43B9F67C63B7383C7176; Granted Authorities: ROLE_USUARIO'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.security.web.FilterChainProxy - /restrito/conta.jsf at position 8 of 10 in additional filter chain; firing Filter: 'SessionManagementFilter'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.security.web.FilterChainProxy - /restrito/conta.jsf at position 9 of 10 in additional filter chain; firing Filter: 'ExceptionTranslationFilter'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.security.web.FilterChainProxy - /restrito/conta.jsf at position 10 of 10 in additional filter chain; firing Filter: 'FilterSecurityInterceptor'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.s.web.util.AntPathRequestMatcher - Checking match of request : '/restrito/conta.jsf'; against '/admin/**'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.s.web.util.AntPathRequestMatcher - Checking match of request : '/restrito/conta.jsf'; against '/restrito/**'
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.s.w.a.i.FilterSecurityInterceptor - Secure object: FilterInvocation: URL: /restrito/conta.jsf; Attributes: [ROLE_USUARIO]
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.s.w.a.i.FilterSecurityInterceptor - Previously Authenticated: org.springframework.security.authentication.UsernamePasswordAuthenticationToken@5e687b94: Principal: org.springframework.security.core.userdetails.User@34bf8c6f: Username: dennisbf; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USUARIO; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@1c07a: RemoteIpAddress: 127.0.0.1; SessionId: 670ABE1C0A0E43B9F67C63B7383C7176; Granted Authorities: ROLE_USUARIO
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.s.access.vote.AffirmativeBased - Voter: org.springframework.security.access.vote.RoleVoter@100c405f, returned: 1
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.s.w.a.i.FilterSecurityInterceptor - Authorization successful
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.s.w.a.i.FilterSecurityInterceptor - RunAsManager did not change Authentication object
20:59:27.015 [http-bio-8080-exec-2] DEBUG o.s.security.web.FilterChainProxy - /restrito/conta.jsf reached end of additional filter chain; proceeding with original chain
20:59:27.023 [http-bio-8080-exec-2] DEBUG o.h.e.def.AbstractSaveEventListener - executing identity-insert immediately
20:59:27.023 [http-bio-8080-exec-2] DEBUG org.hibernate.jdbc.AbstractBatcher - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
20:59:27.023 [http-bio-8080-exec-2] DEBUG org.hibernate.SQL - 
    insert 
    into
        conta_bancaria
        (dat_cadastro, des_conta, favorita, saldo_inicial, cod_usuario) 
    values
        (?, ?, ?, ?, ?)
Hibernate: 
    insert 
    into
        conta_bancaria
        (dat_cadastro, des_conta, favorita, saldo_inicial, cod_usuario) 
    values
        (?, ?, ?, ?, ?)
20:59:27.025 [http-bio-8080-exec-2] DEBUG o.h.id.IdentifierGeneratorHelper - Natively generated identity: 6
20:59:27.025 [http-bio-8080-exec-2] DEBUG org.hibernate.jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
20:59:27.032 [http-bio-8080-exec-2] DEBUG o.h.e.d.AbstractFlushingEventListener - processing flush-time cascades
20:59:27.032 [http-bio-8080-exec-2] DEBUG o.h.e.d.AbstractFlushingEventListener - dirty checking collections
20:59:27.033 [http-bio-8080-exec-2] DEBUG o.h.e.d.AbstractFlushingEventListener - Flushed: 0 insertions, 0 updates, 0 deletions to 1 objects
20:59:27.033 [http-bio-8080-exec-2] DEBUG o.h.e.d.AbstractFlushingEventListener - Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
20:59:27.033 [http-bio-8080-exec-2] DEBUG org.hibernate.pretty.Printer - listing entities:
20:59:27.033 [http-bio-8080-exec-2] DEBUG org.hibernate.pretty.Printer - financeiro.conta.Conta{saldoInicial=0.0, usuario=financeiro.usuario.Usuario#1, favorita=false, conta=6, descricao=null, dataCadastro=Wed Sep 14 20:59:27 BRT 2011}
20:59:27.033 [http-bio-8080-exec-2] DEBUG org.hibernate.jdbc.AbstractBatcher - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
20:59:27.033 [http-bio-8080-exec-2] DEBUG org.hibernate.SQL - 
    select
        this_.cod_conta as cod1_1_1_,
        this_.dat_cadastro as dat2_1_1_,
        this_.des_conta as des3_1_1_,
        this_.favorita as favorita1_1_,
        this_.saldo_inicial as saldo5_1_1_,
        this_.cod_usuario as cod6_1_1_,
        usuario2_.codigo as codigo0_0_,
        usuario2_.ativo as ativo0_0_,
        usuario2_.celular as celular0_0_,
        usuario2_.email as email0_0_,
        usuario2_.idioma as idioma0_0_,
        usuario2_.login as login0_0_,
        usuario2_.nascimento as nascimento0_0_,
        usuario2_.nome as nome0_0_,
        usuario2_.senha as senha0_0_ 
    from
        conta_bancaria this_ 
    inner join
        Usuario usuario2_ 
            on this_.cod_usuario=usuario2_.codigo 
    where
        this_.cod_usuario=?
Hibernate: 
    select
        this_.cod_conta as cod1_1_1_,
        this_.dat_cadastro as dat2_1_1_,
        this_.des_conta as des3_1_1_,
        this_.favorita as favorita1_1_,
        this_.saldo_inicial as saldo5_1_1_,
        this_.cod_usuario as cod6_1_1_,
        usuario2_.codigo as codigo0_0_,
        usuario2_.ativo as ativo0_0_,
        usuario2_.celular as celular0_0_,
        usuario2_.email as email0_0_,
        usuario2_.idioma as idioma0_0_,
        usuario2_.login as login0_0_,
        usuario2_.nascimento as nascimento0_0_,
        usuario2_.nome as nome0_0_,
        usuario2_.senha as senha0_0_ 
    from
        conta_bancaria this_ 
    inner join
        Usuario usuario2_ 
            on this_.cod_usuario=usuario2_.codigo 
    where
        this_.cod_usuario=?
20:59:27.034 [http-bio-8080-exec-2] DEBUG org.hibernate.jdbc.AbstractBatcher - about to open ResultSet (open ResultSets: 0, globally: 0)
20:59:27.035 [http-bio-8080-exec-2] DEBUG org.hibernate.loader.Loader - result row: EntityKey[financeiro.usuario.Usuario#1], EntityKey[financeiro.conta.Conta#5]
20:59:27.036 [http-bio-8080-exec-2] DEBUG org.hibernate.loader.Loader - result row: EntityKey[financeiro.usuario.Usuario#1], EntityKey[financeiro.conta.Conta#6]
20:59:27.036 [http-bio-8080-exec-2] DEBUG org.hibernate.jdbc.AbstractBatcher - about to close ResultSet (open ResultSets: 1, globally: 1)
20:59:27.036 [http-bio-8080-exec-2] DEBUG org.hibernate.jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
20:59:27.036 [http-bio-8080-exec-2] DEBUG org.hibernate.engine.TwoPhaseLoad - resolving associations for [financeiro.usuario.Usuario#1]
20:59:27.036 [http-bio-8080-exec-2] DEBUG org.hibernate.engine.TwoPhaseLoad - done materializing entity [financeiro.usuario.Usuario#1]
20:59:27.036 [http-bio-8080-exec-2] DEBUG org.hibernate.engine.TwoPhaseLoad - resolving associations for [financeiro.conta.Conta#5]
20:59:27.037 [http-bio-8080-exec-2] DEBUG org.hibernate.engine.TwoPhaseLoad - done materializing entity [financeiro.conta.Conta#5]
20:59:27.037 [http-bio-8080-exec-2] DEBUG o.h.e.StatefulPersistenceContext - initializing non-lazy collections
20:59:27.048 [http-bio-8080-exec-2] DEBUG o.s.s.w.a.ExceptionTranslationFilter - Chain processed normally
20:59:27.048 [http-bio-8080-exec-2] DEBUG o.s.s.w.c.SecurityContextPersistenceFilter - SecurityContextHolder now cleared, as request processing completed
20:59:27.048 [http-bio-8080-exec-2] DEBUG o.h.transaction.JDBCTransaction - commit
20:59:27.048 [http-bio-8080-exec-2] DEBUG o.h.e.d.AbstractFlushingEventListener - processing flush-time cascades
20:59:27.048 [http-bio-8080-exec-2] DEBUG o.h.e.d.AbstractFlushingEventListener - dirty checking collections
20:59:27.049 [http-bio-8080-exec-2] DEBUG org.hibernate.engine.Collections - Collection found: [financeiro.usuario.Usuario.permissao#1], was: [financeiro.usuario.Usuario.permissao#1] (uninitialized)
20:59:27.049 [http-bio-8080-exec-2] DEBUG o.h.e.d.AbstractFlushingEventListener - Flushed: 0 insertions, 0 updates, 0 deletions to 3 objects
20:59:27.049 [http-bio-8080-exec-2] DEBUG o.h.e.d.AbstractFlushingEventListener - Flushed: 0 (re)creations, 0 updates, 0 removals to 1 collections
20:59:27.049 [http-bio-8080-exec-2] DEBUG org.hibernate.pretty.Printer - listing entities:
20:59:27.049 [http-bio-8080-exec-2] DEBUG org.hibernate.pretty.Printer - financeiro.conta.Conta{saldoInicial=0.0, usuario=financeiro.usuario.Usuario#1, favorita=false, conta=5, descricao=null, dataCadastro=2011-09-14 20:58:22.0}
20:59:27.049 [http-bio-8080-exec-2] DEBUG org.hibernate.pretty.Printer - financeiro.conta.Conta{saldoInicial=0.0, usuario=financeiro.usuario.Usuario#1, favorita=false, conta=6, descricao=null, dataCadastro=Wed Sep 14 20:59:27 BRT 2011}
20:59:27.049 [http-bio-8080-exec-2] DEBUG org.hibernate.pretty.Printer - financeiro.usuario.Usuario{codigo=1, email=[email removido], ativo=true, idioma=pt_BR, nome=Dennis Faggiani, nascimento=1982-02-23 21:00:00.0, login=dennisbf, senha=de24pi14, permissao=<uninitialized>, celular=[telefone removido]}
20:59:27.050 [http-bio-8080-exec-2] DEBUG o.h.transaction.JDBCTransaction - re-enabling autocommit
20:59:27.050 [http-bio-8080-exec-2] DEBUG o.h.transaction.JDBCTransaction - committed JDBC Connection
20:59:27.050 [http-bio-8080-exec-2] DEBUG org.hibernate.jdbc.ConnectionManager - aggressively releasing JDBC connection
20:59:27.050 [http-bio-8080-exec-2] DEBUG org.hibernate.jdbc.ConnectionManager - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
20:59:27.051 [http-bio-8080-exec-2] DEBUG org.hibernate.impl.SessionImpl - opened session at timestamp: [telefone removido]

meu hibernateUtil

package financeiro.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;


public class HibernateUtil {

	private static final SessionFactory sessionFactory = buildSessionFactory();

	private static SessionFactory buildSessionFactory() {
		try{
			AnnotationConfiguration cfg = new AnnotationConfiguration();
			cfg.configure("hibernate.cfg.xml");
			return cfg.buildSessionFactory();
		} catch (Throwable e){
			System.out.println("Criação inicial do objeto SessionFactory falhou. Erro: " + e);
			throw new ExceptionInInitializerError(e);
		}
		
	}
	
	
	public static SessionFactory getSessionfactory() {
		return sessionFactory;
	}
		
	
}

meu hibernate.cfg

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
		<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
    
		<property name="connection.datasource">java:/comp/env/jdbc/FinanceiroDB</property> 
        <property name="current_session_context_class">thread</property>
      
	<!-- <property name="hibernate.hbm2ddl.auto">create</property> -->	
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>

        <mapping class="financeiro.usuario.Usuario"/>
      
        <mapping class="financeiro.conta.Conta"/>
     
   
    </session-factory>
</hibernate-configuration>
Ei ja tentei mudar o create pra update, mas n funciona tbm, então eu criei e deixei comentado. Alguém tem idéia do que possa ser? valeu pessoal, grande abraço!!

8 Respostas

rdgms

Deu commit na transação?

D

Olá, obrigado por responder tão rápido.
Eu não dei commit segue minha classe contaDAOHibernate.

public class ContaDAOHibernate implements ContaDAO {

	private Session	session;

	public void setSession(Session session) {
		this.session = session;
	}

	@Override
	public void excluir(Conta conta) {
		this.session.delete(conta);
	}

	@Override
	public void salvar(Conta conta) {
		this.session.saveOrUpdate(conta);
	
	}

	@Override
	public Conta carregar(Integer conta) {
		return (Conta) this.session.get(Conta.class, conta);
	}

	
	@Override
	public List<Conta> listar(Usuario usuario) {

		Criteria criteria = this.session.createCriteria(Conta.class);
		criteria.add(Restrictions.eq("usuario", usuario));

		return criteria.list();
	}

	@Override
	public Conta buscarFavorita(Usuario usuario) {

		Criteria criteria = this.session.createCriteria(Conta.class);
		criteria.add(Restrictions.eq("usuario", usuario));
		criteria.add(Restrictions.eq("favorita", true));

		return (Conta) criteria.uniqueResult();
	}
}

Onde teria que ser o commit?
Oq eu acho estranho que é eu consigo salvar usuários, e não tem o commit tbm.
A unica diferença do usuário é q eu dou um

this.session.save(usuario)

e na conta eu uso o saveOrUpdate, mas eu já tentei só com save e não vai tbm
Obrigado.

rdgms

Antes de dar um save abra uma de um getTransaction().begin(); e depois um getTrantaction.commit();

não lembro se era assim msm kkk

D

Então, eu acho que não precisa, pq ele tá como autocommit

veja que ele dá o commit

12:44:11.577 [http-bio-8080-exec-3] DEBUG org.hibernate.SQL - 
    insert 
    into
        conta_bancaria
        (dat_cadastro, des_conta, favorita, saldo_inicial, cod_usuario) 
    values
        (?, ?, ?, ?, ?)
Hibernate: 
    insert 
    into
        conta_bancaria
        (dat_cadastro, des_conta, favorita, saldo_inicial, cod_usuario) 
    values
        (?, ?, ?, ?, ?)
12:44:11.581 [http-bio-8080-exec-3] DEBUG o.h.id.IdentifierGeneratorHelper - Natively generated identity: 7
12:44:11.581 [http-bio-8080-exec-3] DEBUG org.hibernate.jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
[b]12:44:11.581 [http-bio-8080-exec-3] DEBUG o.h.transaction.JDBCTransaction - commit[/b]
12:44:11.581 [http-bio-8080-exec-3] DEBUG o.h.e.d.AbstractFlushingEventListener - processing flush-time cascades
12:44:11.581 [http-bio-8080-exec-3] DEBUG o.h.e.d.AbstractFlushingEventListener - dirty checking collections
12:44:11.581 [http-bio-8080-exec-3] DEBUG o.h.e.d.AbstractFlushingEventListener - Flushed: 0 insertions, 0 updates, 0 deletions to 1 objects
12:44:11.581 [http-bio-8080-exec-3] DEBUG o.h.e.d.AbstractFlushingEventListener - Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections

Uma coisa q eu acabei de notar, é que minha estrutura no BD está assim
cod_conta, cod_usuario, des_conta, dat_cadastro, sal_inicial_favorita

e o hibernate está salvando assim:
dat_cadastro, des_conta, favorita, saldo_inicial, cod_usuario

Isso influi em algo?

rdgms

Ordem não importa… tenta colocar o commit para testar…

D
rdgms:
Ordem não importa.. tenta colocar o commit para testar...
deixei assim

public void salvar(Conta conta) {

this.session.beginTransaction();
this.session.saveOrUpdate(conta);
this.session.getTransaction().commit();
}

E ai eu recebi essa exception, mas n entendi muito bem, eu to começando agora.
Oq eu entendi foi o valor do selectOneMenu é a contaAtiva, que ativa quando o usuário loga.
O unico lugar q eu chamo o contextoBean.setContaAtiva é aqui

<h:selectOneMenu value="#{contextoBean.getContaAtiva.conta}"
			valueChangeListener="#{contextoBean.setContaAtiva}"
			rendered="#{!empty contextoBean}" onchange="submit()">
			<f:selectItems value="#{contaBean.lista}" var="conta"
				itemValue="#{conta.conta}" itemLabel="#{conta.descricao}" />
		</h:selectOneMenu>

e o codigo do setContaAtiva

public void setContaAtiva(ValueChangeEvent event){
		Integer conta = (Integer) event.getNewValue();
		ContaRN contaRN = new ContaRN();
		this.contaAtiva = contaRN.carregar(conta);
		
		
	}

Valeu!

D

Acho que ao invés de Integer, tem que ser String?

D

é por causa que na classe ContaRN
tem o metodo

public Conta carregar(Integer conta) { return this.contaDAO.carregar(conta); }

ele pede um integer conta, mas n consigo entender pq, no livro não está explicando.
é o codigo da conta?

eu acho que ele pode dar um cast desse Integer, pq está setado assim na Entity

@Id @GeneratedValue @Column(name="cod_conta") private Integer conta;

public Conta carregar(Integer conta);

Criado 15 de setembro de 2011
Ultima resposta 15 de set. de 2011
Respostas 8
Participantes 2