Olá gente!
Gostaria de trocar umas idéias com vcs acerca de um problema que está me atormentando já a três dias.
A falha é relativa (acredito, pq estou com dificuldades de debugar) ao serviço de versionamento do hibernate. Estou usando o annotation 3.3.0. Exatamente após eu adicionar este serviço nas minhas classes eu passei a ter problemas (a Exception a baixo). O pior é que hora funciona ora não e assim vai sem que eu possar debugar com tranquilidade para a correção do erro. Já chegei a retirar do o serviço e, pior, deu o mesmo pau. Detalhe não dava pau algum até eu inventar moda.
no aguardo da ajuda,
julio gustavo.
ps.: o código da classe que está me dando dor de cabeça está a seguir à esta Exception.
java.lang.ArrayIndexOutOfBoundsException: -66
at org.hibernate.persister.entity.AbstractEntityPersister.checkVersion(AbstractEntityPersister.java:1726)
at org.hibernate.persister.entity.AbstractEntityPersister.generateUpdateString(AbstractEntityPersister.java:1682)
at org.hibernate.persister.entity.AbstractEntityPersister.generateUpdateString(AbstractEntityPersister.java:1648)
at org.hibernate.persister.entity.AbstractEntityPersister.postConstruct(AbstractEntityPersister.java:2630)
at org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:386)
at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:216)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1176)
at br.com.it.utils.persistence.SFC.(SFC.java:32)
at br.com.it.utils.persistence.SFC.getInstance(SFC.java:48)
at br.com.it.utils.persistence.DAO.getSession(DAO.java:88)
at br.com.it.utils.persistence.DAO.(DAO.java:54)
at br.com.it.utils.persistence.DAO.getDAOInstance(DAO.java:62)
at br.com.it.utils.persistence.MyEMF.getDAOInstance(MyEMF.java:22)
at br.com.it.narnia.controle.clinica.Controlador.buscar(Controlador.java:24)
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:585)
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63)
at javax.faces.component.UICommand.broadcast(UICommand.java:106)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:180)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:158)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:346)
at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:127)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:277)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:97)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
código:
// Generated 05/11/2007 23:25:03 by Hibernate Tools 3.2.0.beta8
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;
import javax.persistence.Version;
import org.hibernate.annotations.CollectionOfElements;
import org.hibernate.annotations.OptimisticLockType;
import br.com.it.utils.persistence.SCRUDE;
/**
-
Convenio generated by hbm2java */ @Entity @org.hibernate.annotations.Entity(optimisticLock = OptimisticLockType.ALL, dynamicUpdate = true) @Table(name = “convenio”, schema = “public”, uniqueConstraints = { @UniqueConstraint(columnNames = { “identificacao” }), @UniqueConstraint(columnNames = { “usuario” }) }) @SequenceGenerator(name = “id_seq”, sequenceName = “convenio_id_seq”, allocationSize = 1) @SuppressWarnings(“serial”) public class Convenio implements java.io.Serializable {
private SCRUDE crud =
new SCRUDE();// Fields
private int id;
private String nome;
private String identificacao;
private Date dataNascimento;
private String usuario;
private String senha;
private String nomeFantasia;
private String nomeContato;
private Date contatoAniversario;
private Integer versao;
private Set dataDePagamentoDoConvenios =
new HashSet(;
0)private Set internetDoConvenios =
new HashSet(;
0)private Set telefoneDoConvenios =
new HashSet(;
0)private Set enderecoDoConvenios =
new HashSet(;
0)private Set credenciadoDoConvenios =
new HashSet(;
0)// Constructors
/** default constructor */ public Convenio() { }
/** minimal constructor */ public Convenio(int id, String nome, String identificacao, String usuario, String senha, String nomeFantasia) { <a href="http://this.id">this.id</a> = id; this.nome = nome; this.identificacao = identificacao; this.usuario = usuario; this.senha = senha; this.nomeFantasia = nomeFantasia; }
/** full constructor */ public Convenio(int id, String nome, String identificacao, Date dataNascimento, String usuario, String senha, String nomeFantasia, String nomeContato, Date contatoAniversario, Integer versao, Set dataDePagamentoDoConvenios, Set internetDoConvenios, Set telefoneDoConvenios, Set credenciadoDoConvenios) { <a href="http://this.id">this.id</a> = id; this.nome = nome; this.identificacao = identificacao; this.dataNascimento = dataNascimento; this.usuario = usuario; this.senha = senha; this.nomeFantasia = nomeFantasia; this.nomeContato = nomeContato; this.contatoAniversario = contatoAniversario; this.versao = versao; this.dataDePagamentoDoConvenios = dataDePagamentoDoConvenios; this.internetDoConvenios = internetDoConvenios; this.telefoneDoConvenios = telefoneDoConvenios; this.credenciadoDoConvenios = credenciadoDoConvenios; }
// Property accessors @Id @Column(name = “id”, unique = true, nullable = false, insertable = true, updatable = true) @GeneratedValue(strategy = GenerationType.AUTO, generator = “id_seq”) public int getId() { return <a href="http://this.id">this.id</a>; }
public void setId(int id) { <a href="http://this.id">this.id</a> = id; }
@Column(name = “nome”, unique = false, nullable = false, insertable = true, updatable = true, length = 150) public String getNome() { return this.nome; }
public void setNome(String nome) { this.nome = nome; }
@Column(name = “identificacao”, unique = true, nullable = false, insertable = true, updatable = true, length = 20) public String getIdentificacao() { return this.identificacao; }
public void setIdentificacao(String identificacao) { this.identificacao = identificacao; }
@Temporal(TemporalType.DATE) @Column(name = “data_nascimento”, unique = false, nullable = true, insertable = true, updatable = true, length = 4) public Date getDataNascimento() { return this.dataNascimento; }
public void setDataNascimento(Date dataNascimento) { this.dataNascimento = dataNascimento; }
@Column(name = “usuario”, unique = true, nullable = false, insertable = true, updatable = true, length = 15) public String getUsuario() { return this.usuario; }
public void setUsuario(String usuario) { this.usuario = usuario; }
@Column(name = “senha”, unique = false, nullable = false, insertable = true, updatable = true, length = 8) public String getSenha() { return this.senha; }
public void setSenha(String senha) { this.senha = senha; }
@Column(name = “nome_fantasia”, unique = false, nullable = false, insertable = true, updatable = true, length = 150) public String getNomeFantasia() { return this.nomeFantasia; }
public void setNomeFantasia(String nomeFantasia) { this.nomeFantasia = nomeFantasia; }
@Column(name = “nome_contato”, unique = false, nullable = true, insertable = true, updatable = true, length = 150) public String getNomeContato() { return this.nomeContato; }
public void setNomeContato(String nomeContato) { this.nomeContato = nomeContato; }
@Temporal(TemporalType.DATE) @Column(name = “contato_aniversario”, unique = false, nullable = true, insertable = true, updatable = true, length = 4) public Date getContatoAniversario() { return this.contatoAniversario; }
public void setContatoAniversario(Date contatoAniversario) { this.contatoAniversario = contatoAniversario; }
@Version @Column(name = “versao”) public Integer getVersao() { return this.versao; }
public void setVersao(Integer versao) { this.versao = versao; }
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = “convenio”)
public List getCredenciadoDoConvenios() {List<CredenciadoDoConvenio> l = new ArrayList<CredenciadoDoConvenio>(); l.addAll(this.credenciadoDoConvenios); return l;
}
public void setCredenciadoDoConvenios( List credenciadoDoConvenios) { this.credenciadoDoConvenios.addAll(credenciadoDoConvenios); }
@CollectionOfElements @JoinTable(name=“data_de_pagamento_do_convenio”, joinColumns = @JoinColumn(name=“convenio_id”)) public List getDataDePagamentoDoConvenios() {
List<DataDePagamentoDoConvenio> l = new ArrayList<DataDePagamentoDoConvenio>(); l.addAll(this.dataDePagamentoDoConvenios); return l;
}
public void setDataDePagamentoDoConvenios( List dataDePagamentoDoConvenios) { this.dataDePagamentoDoConvenios.addAll(dataDePagamentoDoConvenios); }
@CollectionOfElements @JoinTable(name=“internet_do_convenio”, joinColumns = @JoinColumn(name=“convenio_id”)) public List getInternetDoConvenios() {
List<InternetDoConvenio> l = new ArrayList<InternetDoConvenio>(); l.addAll(this.internetDoConvenios); return l;
}
public void setInternetDoConvenios( List internetDoConvenios) { this.internetDoConvenios.addAll(internetDoConvenios); }
@CollectionOfElements @JoinTable(name=“telefone_do_convenio”, joinColumns = @JoinColumn(name=“convenio_id”)) public List getTelefoneDoConvenios() {
List<TelefoneDoConvenio> l = new ArrayList<TelefoneDoConvenio>(); l.addAll(this.telefoneDoConvenios); return l;
}
public void setTelefoneDoConvenios( List telefoneDoConvenios) { this.telefoneDoConvenios.addAll(telefoneDoConvenios); }
@CollectionOfElements @JoinTable(name=“endereco_do_convenio”, joinColumns = @JoinColumn(name=“convenio_id”)) public List getEnderecoDoConvenios() {
List<EnderecoDoConvenio> l = new ArrayList<EnderecoDoConvenio>(); l.addAll(this.enderecoDoConvenios); return l;
}
public void setEnderecoDoConvenios(List enderecoDoConvenios) { this.enderecoDoConvenios.addAll(enderecoDoConvenios); }
public Object adicionar() {
System.out.println("pass c"); Convenio novaEntidade = new Convenio(); novaEntidade.setNome(this.getNome().trim().toLowerCase()); novaEntidade.setIdentificacao(this.getIdentificacao().trim().toLowerCase()); novaEntidade.setNomeFantasia(this.getNomeFantasia().trim().toLowerCase()); novaEntidade.setDataNascimento(this.getDataNascimento()); novaEntidade.setNomeContato(this.getNomeContato().trim().toLowerCase()); novaEntidade.setContatoAniversario(this.getContatoAniversario()); novaEntidade.setUsuario(this.getUsuario().trim().toLowerCase()); novaEntidade.setSenha(this.getSenha().trim().toLowerCase()); System.out.println("pass"); Object o = this.crud.create(novaEntidade); return (!(o instanceof String)) ? novaEntidade : o;
}
public Object adicionar(DataDePagamentoDoConvenio data) {
DataDePagamentoDoConvenio novaEntidade = new DataDePagamentoDoConvenio(); novaEntidade.setDataDePagamento(data.getDataDePagamento()); this.dataDePagamentoDoConvenios.add(novaEntidade); Object o = this.crud.update(this); return (!(o instanceof String)) ? novaEntidade : o;
}
public Object adicionar(InternetDoConvenio internet) {
InternetDoConvenio novaEntidade = new InternetDoConvenio(); novaEntidade.setInternet(internet.getInternet().trim().toLowerCase()); novaEntidade.setTipo(internet.getTipo().trim().toLowerCase()); novaEntidade.setPrincipal(internet.getPrincipal().trim().toLowerCase()); this.internetDoConvenios.add(novaEntidade); Object o = this.crud.update(this); return (!(o instanceof String)) ? novaEntidade : o;
}
public Object adicionar(TelefoneDoConvenio telefone) {
TelefoneDoConvenio novaEntidade = new TelefoneDoConvenio(); novaEntidade.setDdd(telefone.getDdd().trim().toLowerCase()); novaEntidade.setNumero(telefone.getNumero().trim().toLowerCase()); novaEntidade.setTipo(telefone.getTipo().trim().toLowerCase()); novaEntidade.setPrincipal(telefone.getPrincipal().trim().toLowerCase()); this.telefoneDoConvenios.add(novaEntidade); Object o = this.crud.update(this); return (!(o instanceof String)) ? novaEntidade : o;
}
public Object adicionar(EnderecoDoConvenio endereco) {
EnderecoDoConvenio novaEntidade = new EnderecoDoConvenio(); novaEntidade.setPais(endereco.getPais().trim().toLowerCase()); novaEntidade.setEstado(endereco.getEstado().trim().toLowerCase()); novaEntidade.setCidade(endereco.getCidade().trim().toLowerCase()); novaEntidade.setBairro(endereco.getBairro().trim().toLowerCase()); novaEntidade.setRua(endereco.getRua().trim().toLowerCase()); novaEntidade.setNumero(endereco.getNumero().trim().toLowerCase()); novaEntidade.setCep(endereco.getCep().trim().toLowerCase()); novaEntidade.setComplemento(endereco.getComplemento().trim().toLowerCase()); this.enderecoDoConvenios.add(novaEntidade); Object o = this.crud.update(this); return (!(o instanceof String)) ? novaEntidade : o;
}
public Object adicionar(CredenciadoDoConvenio credenciado) {
CredenciadoDoConvenio novaEntidade = new CredenciadoDoConvenio(); novaEntidade.setContrato(credenciado.getContrato()); novaEntidade.setDataInicio(credenciado.getDataInicio()); novaEntidade.setDataTermino(credenciado.getDataTermino()); novaEntidade.setIdentificacaoDoCredenciado(credenciado.getIdentificacaoDoCredenciado()); novaEntidade.setNomeDoCredenciado(credenciado.getIdentificacaoDoCredenciado()); novaEntidade.setTipoContrato(credenciado.getTipoContrato()); this.credenciadoDoConvenios.add(novaEntidade); novaEntidade.setConvenio(this); Object o = this.crud.create(this); return (!(o instanceof String)) ? novaEntidade : o;
}
public String remover() {
return this.crud.remove(this);
}
/**
- IMPORTANTE: só usar quando a lista desta
-
entidade houver sido carregada.
*/
public String remover(DataDePagamentoDoConvenio o) {try { if (this.dataDePagamentoDoConvenios.remove(o)) { return this.crud.remove(o); } return "Este objeto não existe no banco."; } catch (NullPointerException e) { e.printStackTrace(); return "ERR01: Esta entidade é nula."; }
}
/**
- IMPORTANTE: só usar quando a lista desta
-
entidade houver sido carregada.
*/
public String remover(InternetDoConvenio o) {try { if (this.internetDoConvenios.remove(o)) { return this.crud.remove(o); } return "Este objeto não existe no banco."; } catch (NullPointerException e) { e.printStackTrace(); return "ERR01: Esta entidade é nula."; }
}
/**
- IMPORTANTE: só usar quando a lista desta
-
entidade houver sido carregada.
*/
public String remover(TelefoneDoConvenio o) {try { if (this.telefoneDoConvenios.remove(o)) { return this.crud.remove(o); } return "Este objeto não existe no banco."; } catch (NullPointerException e) { e.printStackTrace(); return "ERR01: Esta entidade é nula."; }
}
/**
- IMPORTANTE: só usar quando a lista desta
-
entidade houver sido carregada.
*/
public String remover(EnderecoDoConvenio o) {try { if (this.enderecoDoConvenios.remove(o)) { return this.crud.remove(o); } return "Este objeto não existe no banco."; } catch (NullPointerException e) { e.printStackTrace(); return "ERR01: Esta entidade é nula."; }
}
/**
- IMPORTANTE: só usar quando a lista desta
-
entidade houver sido carregada.
*/
public String remover(CredenciadoDoConvenio o) {try { if (this.credenciadoDoConvenios.remove(o)) { return this.crud.remove(o); } return "Este objeto não existe no banco."; } catch (NullPointerException e) { e.printStackTrace(); return "ERR01: Esta entidade é nula."; }
}
public String atualizar() {
return this.crud.update(this);
}
public String atualizar(DataDePagamentoDoConvenio o) {
return this.crud.update(o);
}
public String atualizar(InternetDoConvenio o) {
return this.crud.update(o);
}
public String atualizar(TelefoneDoConvenio o) {
return this.crud.update(o);
}
public String atualizar(EnderecoDoConvenio o) {
return this.crud.update(o);
}
public String atualizar(CredenciadoDoConvenio o) {
return this.crud.update(o);
}
}