Auditoria com Hibernate!

13 respostas
Dassayev

Bom dia pessoal!

Estou criando um módulo de auditoria na minha aplicação web (JSF, Hibernate e Postgres). A minha idéia é registrar tudo que acontece na aplicação: inserção de registro, alteração, exclusão, … Estou querendo fazer isso na aplicação e não no banco de dados. Minha dúvida é a seguinte: tem como obter os dois estados do objeto a ser persistido? Por exemplo: vamos supor que eu vou alterar um registro, quero saber o objeto antes da alteração e depois da alteração, para que eu possa montar um registro da minha auditoria. Não sei se essa é a melhor opção. Se alguém tiver alguma sugestão melhor, eu agradeço muito!

Obrigado!

13 Respostas

R

Dê uma olhada no Hibernate Envers:

Escrevi um post sobre:
http://www.cauirs.com.br/rafael/?cat=10

Dassayev

Muito bom o post! Mas ele cria essa tabela auxiliar no banco de dados? Com que nome?

R

Sim, cria.

nometabela_aud
ex: cliente_aud

Ou você pode alterar as configurações para definir outro sufixo para a tabela como você quiser.

Mais detalhes na documentação: 3.1 Envers Configuration Properties
http://docs.jboss.org/envers/docs/index.html

Enfim, muito útil e fácil para auditoria :smiley:

Dassayev

Rafael, fiz a configuração como está no seu artigo mas está gerando o seguinte erro quando tento persistir:

07/09/2010 23:53:13 com.sun.faces.application.ActionListenerImpl processAction SEVERE: java.lang.NoSuchMethodError: org.hibernate.engine.ActionQueue.registerProcess(Lorg/hibernate/action/BeforeTransactionCompletionProcess;)V javax.faces.el.EvaluationException: java.lang.NoSuchMethodError: org.hibernate.engine.ActionQueue.registerProcess(Lorg/hibernate/action/BeforeTransactionCompletionProcess;)V at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91) at javax.faces.component.UICommand.broadcast(UICommand.java:383) at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321) at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296) at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253) at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.NoSuchMethodError: org.hibernate.engine.ActionQueue.registerProcess(Lorg/hibernate/action/BeforeTransactionCompletionProcess;)V at org.hibernate.envers.synchronization.AuditProcessManager.get(AuditProcessManager.java:58) at org.hibernate.envers.event.AuditEventListener.onPostUpdate(AuditEventListener.java:164) at org.hibernate.action.EntityUpdateAction.postUpdate(EntityUpdateAction.java:200) at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:179) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137) at br.com.jdsistemas.dao.Dao.inserirOuAtualizar(Dao.java:19) at br.com.jdsistemas.bean.Bean.inserirOuAtualizar(Bean.java:166) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.el.parser.AstValue.invoke(AstValue.java:172) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77) ... 32 more 07/09/2010 23:53:13 com.sun.faces.lifecycle.InvokeApplicationPhase execute WARNING: #{empresaBean.inserirOuAtualizar}: java.lang.NoSuchMethodError: org.hibernate.engine.ActionQueue.registerProcess(Lorg/hibernate/action/BeforeTransactionCompletionProcess;)V javax.faces.FacesException: #{empresaBean.inserirOuAtualizar}: java.lang.NoSuchMethodError: org.hibernate.engine.ActionQueue.registerProcess(Lorg/hibernate/action/BeforeTransactionCompletionProcess;)V at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107) at javax.faces.component.UICommand.broadcast(UICommand.java:383) at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321) at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296) at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253) at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:619) Caused by: javax.faces.el.EvaluationException: java.lang.NoSuchMethodError: org.hibernate.engine.ActionQueue.registerProcess(Lorg/hibernate/action/BeforeTransactionCompletionProcess;)V at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91) ... 31 more Caused by: java.lang.NoSuchMethodError: org.hibernate.engine.ActionQueue.registerProcess(Lorg/hibernate/action/BeforeTransactionCompletionProcess;)V at org.hibernate.envers.synchronization.AuditProcessManager.get(AuditProcessManager.java:58) at org.hibernate.envers.event.AuditEventListener.onPostUpdate(AuditEventListener.java:164) at org.hibernate.action.EntityUpdateAction.postUpdate(EntityUpdateAction.java:200) at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:179) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137) at br.com.jdsistemas.dao.Dao.inserirOuAtualizar(Dao.java:19) at br.com.jdsistemas.bean.Bean.inserirOuAtualizar(Bean.java:166) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.el.parser.AstValue.invoke(AstValue.java:172) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77) ... 32 more 07/09/2010 23:53:13 com.sun.faces.lifecycle.LifecycleImpl phase WARNING: executePhase(INVOKE_APPLICATION 5,com.sun.faces.context.FacesContextImpl@2d64ff8f) threw exception javax.faces.FacesException: #{empresaBean.inserirOuAtualizar}: java.lang.NoSuchMethodError: org.hibernate.engine.ActionQueue.registerProcess(Lorg/hibernate/action/BeforeTransactionCompletionProcess;)V at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:105) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:619) Caused by: javax.faces.FacesException: #{empresaBean.inserirOuAtualizar}: java.lang.NoSuchMethodError: org.hibernate.engine.ActionQueue.registerProcess(Lorg/hibernate/action/BeforeTransactionCompletionProcess;)V at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107) at javax.faces.component.UICommand.broadcast(UICommand.java:383) at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321) at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296) at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253) at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97) ... 25 more Caused by: javax.faces.el.EvaluationException: java.lang.NoSuchMethodError: org.hibernate.engine.ActionQueue.registerProcess(Lorg/hibernate/action/BeforeTransactionCompletionProcess;)V at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91) ... 31 more Caused by: java.lang.NoSuchMethodError: org.hibernate.engine.ActionQueue.registerProcess(Lorg/hibernate/action/BeforeTransactionCompletionProcess;)V at org.hibernate.envers.synchronization.AuditProcessManager.get(AuditProcessManager.java:58) at org.hibernate.envers.event.AuditEventListener.onPostUpdate(AuditEventListener.java:164) at org.hibernate.action.EntityUpdateAction.postUpdate(EntityUpdateAction.java:200) at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:179) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137) at br.com.jdsistemas.dao.Dao.inserirOuAtualizar(Dao.java:19) at br.com.jdsistemas.bean.Bean.inserirOuAtualizar(Bean.java:166) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.el.parser.AstValue.invoke(AstValue.java:172) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77) ... 32 more

Não sei o que fazer!

Dassayev
O erro não está sendo gerado! Fiz uma alteração na minha classe de conexão e o erro parou de ser gerado. Porém a auditoria não está sendo feita! Abaixo está a minha classe de conexão!
package br.com.jdsistemas.dao;

import br.com.jdsistemas.audinfo.to.Cliente;
import br.com.jdsistemas.audinfo.to.Empresa;
import br.com.jdsistemas.audinfo.to.Funcionario;
import br.com.jdsistemas.audinfo.to.Mensagem;
import br.com.jdsistemas.audinfo.to.OrdemServico;
import br.com.jdsistemas.audinfo.to.Perfil;
import br.com.jdsistemas.audinfo.to.Processo;
import br.com.jdsistemas.audinfo.to.ProcessoOs;
import br.com.jdsistemas.audinfo.to.Servico;
import br.com.jdsistemas.audinfo.to.Setor;
import br.com.jdsistemas.audinfo.to.Situacao;
import br.com.jdsistemas.audinfo.to.UserRole;
import br.com.jdsistemas.audinfo.to.Usuario;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtility {

    private static SessionFactory factory;
    private static AnnotationConfiguration aC;

    static {
        try {
            aC = new AnnotationConfiguration();
            aC.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
            aC.setProperty("hibernate.connection.driver_class", "org.postgresql.Driver");
            aC.setProperty("hibernate.connection.url", "jdbc:postgresql://localhost:5432/audinfo");
            aC.setProperty("hibernate.connection.username", "postgres");
            aC.setProperty("hibernate.connection.password", "postgres");
            aC.setProperty("hibernate.show_sql", "false");
            aC.setProperty("hibernate.format_sql", "true");
            aC.setProperty("hibernate.c3p0.acquire_increment", "1");
            aC.setProperty("hibernate.c3p0.idle_test_period", "100");
            aC.setProperty("hibernate.c3p0.min_size", "10");
            aC.setProperty("hibernate.c3p0.max_size", "100");
            aC.setProperty("hibernate.c3p0.max_statements", "0");
            aC.setProperty("hibernate.c3p0.timeout", "100");
            aC.setProperty("hibernate.ejb.event.post-insert", "org.hibernate.envers.event.AuditEventListener");
            aC.setProperty("hibernate.ejb.event.post-update", "org.hibernate.envers.event.AuditEventListener");
            aC.setProperty("hibernate.ejb.event.post-delete", "org.hibernate.envers.event.AuditEventListener");
            aC.setProperty("hibernate.ejb.event.pre-collection-update", "org.hibernate.envers.event.AuditEventListener");
            aC.setProperty("hibernate.ejb.event.pre-collection-remove", "org.hibernate.envers.event.AuditEventListener");
            aC.setProperty("hibernate.ejb.event.post-collection-recreate", "org.hibernate.envers.event.AuditEventListener");
            aC.addAnnotatedClass(Usuario.class);
            aC.addAnnotatedClass(Perfil.class);
            aC.addAnnotatedClass(Servico.class);
            aC.addAnnotatedClass(Setor.class);
            aC.addAnnotatedClass(Cliente.class);
            aC.addAnnotatedClass(OrdemServico.class);
            aC.addAnnotatedClass(Funcionario.class);
            aC.addAnnotatedClass(UserRole.class);
            aC.addAnnotatedClass(Empresa.class);
            aC.addAnnotatedClass(Situacao.class);
            aC.addAnnotatedClass(Processo.class);
            aC.addAnnotatedClass(ProcessoOs.class);
            aC.addAnnotatedClass(Mensagem.class);
            factory = aC.buildSessionFactory();
        } catch (Exception e) {
            e.printStackTrace();
            factory = null;
        }
    }

    public static Session getSession() {
        return factory.openSession();
    }

    public static SessionFactory getSessionFactory() {
        return factory;
    }
    
}
Giulliano

Uma solução elegante para o seu problema sem acoplamento de mais grameworks seria o uso de AOP. Programação orientada a aspectos. Eu desenvolvi uma aplicação que gerava log e auditoria de qualquer parte do sistema, e não somente na camada de persistência.

Se lhe interessar procure por Aspect-J

Dassayev

Valeu Giulliano, mas axo que para o meu caso seria mais interessante usar o Envers. Mas agradeço pela dica!

Dassayev

Ajuda ai pessoal!!! To doido já com esse erro!
Obrigado!

Dassayev

Alguém poderia me ajudar?

Dassayev

Pessoal consegui fazer com que as tabelas fossem criadas. Estava faltando o paramentro do Hibernate que cria as tabelas automaticamente. Mas um erro está sendo gerado ao persistir um objeto. Ele gera o seguinte erro:

Já procurei na net mas não consegui resolver o problema! Alguém poderia me ajudar, por favor?!

Dassayev

Alguém poderia me ajudar?

R

Você com a versão mais recente do Hibernate?

Dassayev

Optei por usar Triggers!
Vlws!!

Criado 7 de setembro de 2010
Ultima resposta 18 de mai. de 2011
Respostas 13
Participantes 3