Hibernate Erro

11 respostas
H

Olá pessoal…

Já procurei em vários locais mas não achei resposta para esta dúvida…

Quando vou editar um objeto Usuario que contem dois bags, um Telefone e outro Email, recebo o seguinte erro:

org.hibernate.HibernateException: Found shared references to a collection: br.com.softsun.imobiliaria.modelo.Usuario.email

Não sei o q pode ser!!!

Alguém poderia me dar uma idéia do que possa ser?..

11 Respostas

M

Você fez um debug na sua aplicação ??

Por favor, poste a parte do código onde está dando o erro, ou se preferir, poste o código todo indicando onde dá o erro.

Valew.

J

Posta o código pra podermos entendermelhor o que está acontecendo…

Falow…

H

Desculpa a demora, mas é que minha conexão esta uma carroça…

Bem, vamos lá então aos códigos e detalhamento do erro:

Eu usei a facilidade do Hibernate de criar um banco de dados via código java e no modelo de dados entre outros objetos eu tenho um Usuario e um Imóvel…

(Detalhe: Estou utilizando o VRaptor como framework)

Cada Imóvel tem um bag de “Telefone”
Cada Usuario tem um bag de “Telefone” e um de “Email”

Ao criar o banco, o Hibernate mapeou assim:

“telefone” | “telefone_imovel” | “telefone_usuario”
“email” | "email_usuario

Para inserir meu Usuário eu chamo primeiro um metodo addTelefone e o mesmo pra email onde guardo dinamicamente cada entidade dessas, seja telefone ou email…
Quando aciono o botão de inserir ele coloca essas entidades em uma lista e adiciona essas listas para a entidade Usuario.
Então fica assim:
Usuario (Lista de Telefones | Lista de Emails)
Usando o cascade, gravo perfeitamente no BD todos esses dados nas respectivas tabelas. (A princípio duvidei se daria certo, pois tinha duas tabelas não mapeadas no relacionamento “usuario_telefone” e “usuario_email” que continha os código para fins de relacionamentos, mas paguei minha língua… :P).
Para excluir também funciona belezinha…

Mas na hora de editar…
Ele traz todos os dados corretos na página, só que quando modifico algo e mando alterar ele me traz esse erro:

org.hibernate.HibernateException: Found shared references to a collection: br.com.softsun.imobiliaria.modelo.Usuario.email

Minhas classes para que vcs possam entender melhor os problemas:

Usuario:

package br.com.softsun.imobiliaria.modelo;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.hibernate.annotations.Cascade;

@Entity
public class Usuario {
	
	@Id
	@GeneratedValue
	private Long id;	
	
	private String login;
	
	private String senha;
	
	private String nome;	

	@ManyToOne(cascade=CascadeType.PERSIST)
	@JoinColumn(name="cd_tipo_usuario")
	private TipoUsuario tipoUsuario;
	
	private String cep;

	@ManyToOne(cascade=CascadeType.PERSIST)
	@JoinColumn(name="cd_pais")
	private Pais pais;


	@ManyToOne(cascade=CascadeType.PERSIST)
	@JoinColumn(name="cd_estado")
	private Estado estado;


	@ManyToOne(cascade=CascadeType.PERSIST)
	@JoinColumn(name="cd_cidade")
	private Cidade cidade;


	@ManyToOne(cascade=CascadeType.PERSIST)
	@JoinColumn(name="cd_bairro")
	private Bairro bairro;
	
	private String endereco;
	
	private String complementoEndereco;
	
	@OneToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
	@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
	          org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
    private List<Email> email;
	
	@OneToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
	@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
	          org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
	private List<Telefone> telefone;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public Bairro getBairro() {
		return bairro;
	}

	public void setBairro(Bairro bairro) {
		this.bairro = bairro;
	}

	public Cidade getCidade() {
		return cidade;
	}

	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}

	public Estado getEstado() {
		return estado;
	}

	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	public Pais getPais() {
		return pais;
	}

	public void setPais(Pais pais) {
		this.pais = pais;
	}

	public TipoUsuario getTipoUsuario() {
		return tipoUsuario;
	}

	public void setTipoUsuario(TipoUsuario tipoUsuario) {
		this.tipoUsuario = tipoUsuario;
	}

	public String getComplementoEndereco() {
		return complementoEndereco;
	}

	public void setComplementoEndereco(String complementoEndereco) {
		this.complementoEndereco = complementoEndereco;
	}

	public List<Email> getEmail() {
		return email;
	}

	public void setEmail(List<Email> email) {
		this.email = email;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public List<Telefone> getTelefone() {
		return telefone;
	}

	public void setTelefone(List<Telefone> telefones) {
		this.telefone = telefones;
	}

}

Telefone:

package br.com.softsun.imobiliaria.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Telefone {
	
	public static final int USUARIO = 1;
	
	public static final int IMOVEL = 2;

	@Id
	@GeneratedValue
	private Long id;
	
	private String descricao;
	
	private int codigoArea;	
	
	private int codigoEntidade;

	public int getCodigoArea() {
		return codigoArea;
	}

	public void setCodigoArea(int codigoArea) {
		this.codigoArea = codigoArea;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public int getCodigoEntidade() {
		return codigoEntidade;
	}

	public void setCodigoEntidade(int codigoEntidade) {
		this.codigoEntidade = codigoEntidade;
	}

}

Email:

package br.com.softsun.imobiliaria.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Email {
	
	@Id
	@GeneratedValue
	private Long id;
	
	private String descricao;

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

}

Caso não seja suficiente para entender, eu coloco outras partes…

Desde já sou grato pelo auxílio!

H

Desculpa a demora, mas é que minha conexão esta uma carroça…

Bem, vamos lá então aos códigos e detalhamento do erro:

Eu usei a facilidade do Hibernate de criar um banco de dados via código java e no modelo de dados entre outros objetos eu tenho um Usuario e um Imóvel…

(Detalhe: Estou utilizando o VRaptor como framework)

Cada Imóvel tem um bag de “Telefone”
Cada Usuario tem um bag de “Telefone” e um de “Email”

Ao criar o banco, o Hibernate mapeou assim:

“telefone” | “telefone_imovel” | “telefone_usuario”
“email” | "email_usuario

Para inserir meu Usuário eu chamo primeiro um metodo addTelefone e o mesmo pra email onde guardo dinamicamente cada entidade dessas, seja telefone ou email…
Quando aciono o botão de inserir ele coloca essas entidades em uma lista e adiciona essas listas para a entidade Usuario.
Então fica assim:
Usuario (Lista de Telefones | Lista de Emails)
Usando o cascade, gravo perfeitamente no BD todos esses dados nas respectivas tabelas. (A princípio duvidei se daria certo, pois tinha duas tabelas não mapeadas no relacionamento “usuario_telefone” e “usuario_email” que continha os código para fins de relacionamentos, mas paguei minha língua… :P).
Para excluir também funciona belezinha…

Mas na hora de editar…
Ele traz todos os dados corretos na página, só que quando modifico algo e mando alterar ele me traz esse erro:

org.hibernate.HibernateException: Found shared references to a collection: br.com.softsun.imobiliaria.modelo.Usuario.email

Minhas classes para que vcs possam entender melhor os problemas:

Usuario:

package br.com.softsun.imobiliaria.modelo;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.hibernate.annotations.Cascade;

@Entity
public class Usuario {
	
	@Id
	@GeneratedValue
	private Long id;	
	
	private String login;
	
	private String senha;
	
	private String nome;	

	@ManyToOne(cascade=CascadeType.PERSIST)
	@JoinColumn(name="cd_tipo_usuario")
	private TipoUsuario tipoUsuario;
	
	private String cep;

	@ManyToOne(cascade=CascadeType.PERSIST)
	@JoinColumn(name="cd_pais")
	private Pais pais;


	@ManyToOne(cascade=CascadeType.PERSIST)
	@JoinColumn(name="cd_estado")
	private Estado estado;


	@ManyToOne(cascade=CascadeType.PERSIST)
	@JoinColumn(name="cd_cidade")
	private Cidade cidade;


	@ManyToOne(cascade=CascadeType.PERSIST)
	@JoinColumn(name="cd_bairro")
	private Bairro bairro;
	
	private String endereco;
	
	private String complementoEndereco;
	
	@OneToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
	@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
	          org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
    private List<Email> email;
	
	@OneToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
	@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
	          org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
	private List<Telefone> telefone;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public Bairro getBairro() {
		return bairro;
	}

	public void setBairro(Bairro bairro) {
		this.bairro = bairro;
	}

	public Cidade getCidade() {
		return cidade;
	}

	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}

	public Estado getEstado() {
		return estado;
	}

	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	public Pais getPais() {
		return pais;
	}

	public void setPais(Pais pais) {
		this.pais = pais;
	}

	public TipoUsuario getTipoUsuario() {
		return tipoUsuario;
	}

	public void setTipoUsuario(TipoUsuario tipoUsuario) {
		this.tipoUsuario = tipoUsuario;
	}

	public String getComplementoEndereco() {
		return complementoEndereco;
	}

	public void setComplementoEndereco(String complementoEndereco) {
		this.complementoEndereco = complementoEndereco;
	}

	public List<Email> getEmail() {
		return email;
	}

	public void setEmail(List<Email> email) {
		this.email = email;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public List<Telefone> getTelefone() {
		return telefone;
	}

	public void setTelefone(List<Telefone> telefones) {
		this.telefone = telefones;
	}

}

Telefone:

package br.com.softsun.imobiliaria.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Telefone {
	
	public static final int USUARIO = 1;
	
	public static final int IMOVEL = 2;

	@Id
	@GeneratedValue
	private Long id;
	
	private String descricao;
	
	private int codigoArea;	
	
	private int codigoEntidade;

	public int getCodigoArea() {
		return codigoArea;
	}

	public void setCodigoArea(int codigoArea) {
		this.codigoArea = codigoArea;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public int getCodigoEntidade() {
		return codigoEntidade;
	}

	public void setCodigoEntidade(int codigoEntidade) {
		this.codigoEntidade = codigoEntidade;
	}

}

Email:

package br.com.softsun.imobiliaria.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Email {
	
	@Id
	@GeneratedValue
	private Long id;
	
	private String descricao;

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

}

Caso não seja suficiente para entender, eu coloco outras partes…

Desde já sou grato pelo auxílio!

H

Desconsiderem o último post…
Deu um erro de BD no GUJ e acabei enviando duas vezes a mesma mensagem…

M

Por favor, post aqui o código da sua Logic onde vc popula os objetos Usuario, Telefone e Email.

Valew.

H

Conforme pedido…

UsuarioLogic:

package br.com.softsun.imobiliaria.logic;

import java.util.List;

import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;

import br.com.softsun.imobiliaria.dao.DaoFactory;
import br.com.softsun.imobiliaria.modelo.Email;
import br.com.softsun.imobiliaria.modelo.Pais;
import br.com.softsun.imobiliaria.modelo.Telefone;
import br.com.softsun.imobiliaria.modelo.TipoUsuario;
import br.com.softsun.imobiliaria.modelo.Usuario;

@Component("usuario")
//@InterceptedBy({AutorizadorInterceptor.class, DaoInterceptor.class})
@InterceptedBy(DaoInterceptor.class)
public class UsuarioLogic {
	
	private final DaoFactory daoFactory;
	
	private Usuario usuario;
	
	private List<Usuario> usuarios;
	
	private List<Telefone> telefones;
	
	private List<Email> emails;
	
	public UsuarioLogic(DaoFactory daoFactory) {
		this.daoFactory = daoFactory;
	}

	// formulario para edicao
	public void editar(Usuario usuario) {
		// carrega os dados no banco para edicao
		this.usuario = this.daoFactory.getUsuarioDao().procura(usuario.getId());
		telefones = this.usuario.getTelefone();
		emails = this.usuario.getEmail();
	}
	
	@SuppressWarnings("unchecked")
	public void adiciona(Usuario usuario) {
		this.editar(usuario);
		usuario.setEmail(pegarEmails());
		usuario.setTelefone(pegarTelefones());
		this.daoFactory.beginTransaction();
		this.daoFactory.getUsuarioDao().adiciona(usuario);
		this.daoFactory.commit();
		TelefoneLogic.setTelefones(null);
		EmailLogic.setEmails(null);
	}

	private List<Email> pegarEmails() {
		if (usuario.getId() == null) {
			return EmailLogic.getEmails();
		} else {
			List<Email> lista = EmailLogic.getEmails();
			lista.remove(EmailLogic.getEmails().size() - 1);
			for (Email element : EmailLogic.getEmails()) {
				this.usuario.getEmail().add(element);
			}
			return this.usuario.getEmail();
		}
	}

	private List<Telefone> pegarTelefones() {
		if(usuario.getId() == null) {
			return TelefoneLogic.getTelefones();
		} else {
			List<Telefone> lista = TelefoneLogic.getTelefones();
			lista.remove(TelefoneLogic.getTelefones().size() - 1);
			for(Telefone element : TelefoneLogic.getTelefones()) {
				this.usuario.getTelefone().add(element);
			}
			return this.usuario.getTelefone();
		}
	}
	
	@SuppressWarnings("unchecked")
	public void remove(Usuario usuario) {
		usuario = this.daoFactory.getUsuarioDao().procura(usuario.getId());
		this.daoFactory.beginTransaction();
		this.daoFactory.getUsuarioDao().remove(usuario);
		this.daoFactory.commit();
	}
	
	public void formulario() {
		
	}
	
	public List<Usuario> getUsuarios() {
		return usuarios;
	}
	
	public Usuario getUsuario() {
		return usuario;
	}
	
	public List<TipoUsuario> getListaTipoUsuarios() {
		return this.daoFactory.getTipoUsuarioDao().listaTudo();
	}
	
	public List<Pais> getListaPaises() {
		return this.daoFactory.getPaisDao().listaTudo();
	}
	
	// método usado para popular o select de telefones
	public List<Telefone> getListaTelefones() {
		return this.telefones;
	}
	
	@SuppressWarnings("unchecked")
	public void lista() {
		usuarios = this.daoFactory.getUsuarioDao().listaTudo();
	}

	public List<Email> getListaEmails() {
		return this.emails;
	}
}

TelefoneLogic:

package br.com.softsun.imobiliaria.logic;

import java.util.ArrayList;
import java.util.List;

import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;

import br.com.softsun.imobiliaria.dao.DaoFactory;
import br.com.softsun.imobiliaria.modelo.Telefone;

@Component("telefone")
@InterceptedBy(DaoInterceptor.class)
public class TelefoneLogic {
	
	private final DaoFactory daoFactory;
	
	private Telefone telefone;
	
	private static List<Telefone> telefones = new ArrayList<Telefone>();
	
	public TelefoneLogic(DaoFactory daoFactory) {
		this.daoFactory = daoFactory;
	}
	
	// formulário para adição
	public void formulario() {
		
	}
	
	// formulário para edição
	public void editar(Telefone telefone) {
		// carrega os dados no banco para edição
		this.telefone = this.daoFactory.getTelefoneDao().procura(telefone.getId());
	}

	// Adiciona um Telefone novo ou atualiza se for edicao
	public void armazena(Telefone telefone) {
		this.daoFactory.beginTransaction();
		this.daoFactory.getTelefoneDao().atualiza(telefone);
		this.daoFactory.commit();
	}

	// remove um Telefone
	public void remove(Telefone telefone) {
		this.daoFactory.beginTransaction();
		this.daoFactory.getTelefoneDao().remove(telefone);
		this.daoFactory.commit();
	}

	public Telefone getTelefone() {
		return telefone;
	}

	public static List<Telefone> getTelefones() {
		return telefones;
	}
	
	public void lista() {
		telefones = this.daoFactory.getTelefoneDao().listaTudo();
	}
	
	public static void setTelefones(List<Telefone> telefones) {
		TelefoneLogic.telefones = telefones;
	}

	public void adiciona(Telefone telefone) {
		if(telefones == null)
			telefones = new ArrayList<Telefone>();
		telefones.add(telefone);		
	}


}

E EmailLogic:

package br.com.softsun.imobiliaria.logic;

import java.util.ArrayList;
import java.util.List;

import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;

import br.com.softsun.imobiliaria.dao.DaoFactory;
import br.com.softsun.imobiliaria.modelo.Email;

@Component("email")
@InterceptedBy(DaoInterceptor.class)
public class EmailLogic {
	
	private final DaoFactory daoFactory;
	
	private Email email;
	
	private static List<Email> emails = new ArrayList<Email>();
	
	public EmailLogic(DaoFactory daoFactory) {
		this.daoFactory = daoFactory;
	}
	
	// formulário para adição
	public void formulario() {
		
	}
	
	// formulário para edição
	public void editar(Email email) {
		// carrega os dados no banco para edição
		this.email = this.daoFactory.getEmailDao().procura(email.getId());
	}

	// Adiciona um Telefone novo ou atualiza se for edicao
	public void armazena(Email email) {
		this.daoFactory.beginTransaction();
		this.daoFactory.getEmailDao().atualiza(email);
		this.daoFactory.commit();
	}

	// remove um Telefone
	public void remove(Email email) {
		this.daoFactory.beginTransaction();
		this.daoFactory.getEmailDao().remove(email);
		this.daoFactory.commit();
	}

	public Email getEmail() {
		return email;
	}

	public static List<Email> getEmails() {
		return emails;
	}
	
	public void lista() {
		emails = this.daoFactory.getEmailDao().listaTudo();
	}
	
	public static void setEmails(List<Email> emails) {
		EmailLogic.emails = emails;
	}

	public void adiciona(Email email) {
		if(emails == null)
			emails = new ArrayList<Email>();
		emails.add(email);		
	}


}

Para povoar as listas na hora de inserir eu uso XmlHttpRequest chamando o adiciona de cada entidade.

M

Acho que o erro está aqui:

// formulario para edicao  
   public void editar(Usuario usuario) {  
       // carrega os dados no banco para edicao  
       this.usuario = this.daoFactory.getUsuarioDao().procura(usuario.getId());  
       telefones = this.usuario.getTelefone();  
       emails = this.usuario.getEmail();  
   }

Tente fazer algo do tipo:

// formulario para edicao  
   public void editar(Usuario usuario) {  
       // carrega os dados no banco para edicao  
       this.usuario = this.daoFactory.getUsuarioDao().procura(usuario.getId());  
       telefones    = this.daoFactory.getTelefoneDao().procuraPorUsuario(usuario.getId());  
       emails        = this.daoFactory.getEmailDao().procuraPorUsuario(usuario.getId());  
   }

Veja que vc tem que ter as consultas de Telefones e Emails por usuário !!!

H

Quando chamo o Hibernate para executar uma query que busca os Telefones ou Emails de acordo com o Usuario, não sei como passar o id do usuario.
Pois o mapeamento de Telefones, por exemplo, não possui o codigo de usuario, então não posso fazer tipo assim:

telefones = this.daoFactory.getTelefoneDao().procuraLista(usuario.getId(), "Usuario_id");

Se faço usando HQL, dá problemas de mapeamento, pois quando faço a query ele não reconhece a tabela “telefone_usuario”…
Sendo que foi o próprio Hibernate que criou ela para relacionar telefone com usuario…

Alguma idéia do que posso fazer?

H

Mas quando eu chamo o método “procura” no objeto usuário ele já me traz a lista dos opbjetos telefone e email que estão no banco…

Quando referencio a lista tanto de telefones como de emails ele já coloca as lista que vem do banco de acordo com o usuário que foi buscado no banco.

Por isso, não deveria dar certo? Não é correto? Não é a mesma coisa eu fazer isso, chamando o método getTelefones() e getEmails do usuario já que trago ele junto com usuario?

Quando faço o Debug ele recebe perfeitamente as listas e referencia para minhas listas de telefone e email que estão na logic.

Mas quando ele entra no commit() ele dá o erro!!! :cry:

org.hibernate.HibernateException: Found shared references to a collection: br.com.softsun.imobiliaria.modelo.Usuario.email

H

Acho interessante frizar também que a entidade Imovel faz quase a mesma coisa que Usuario, só que tem apenas telefone como bag e funciona!!!

Usuario contêm Telefone | Email

enquanto que

Imovel contêm Telefone

E o que eu faço na logic de Usuario, eu faço na logic de Imovel também, ou seja, pego a entidade (Usuario | Imovel) no banco usando o método editar() e referencio o bag de telefone para o Array que esta na logic.

No Usuario a única diferença é que tenho dois bags. Acho que é por aí que está o problema (ou a solução). Só que não consegui ainda decifrá-lo!!!

Criado 4 de setembro de 2007
Ultima resposta 4 de set. de 2007
Respostas 11
Participantes 3