Olá, esse é meu primeiro post aqui, desculpe se o titulo ficou um pouco confuso.
Para melhorar vou explicar melhor do que se trata meu projeto:
Ele é dividido em 3 partes:
Um cliente android
Um servidor que fornece os objetos salvos em banco para o cliente android(hibernate+MySql)
Um projeto Web em JSF que acessa o mesmo banco (hibernate+MySql)
O android e o servidor se cominicam via socket, a comunicação é sempre feita por um objeto chamado Pacote (código abaixo), que tem “cabecalho” e “conteudo”(o que realmente é enviado)
O objeto requerido é posto no atributo “conteudo” da classe “Pacote” com um “cabecalho” para identificá-lo
O problema está na hora do android converter os objetos de dentro do atributo “conteudo” para sua tipagem de origem.
Quando eu mando os objetos sem recuperá-los do banco com o hibernate, tudo funciona certinho. Porem na hora de enviar os mesmos objetos, mas vindos do banco, eu tenho problemas com as dependências do hibernate.
Cheguei a adicionar ao android os jar do hibernate para ver se resolvia o problema, porem gerou outro:
(Servidor)o metodo de envio
[code] private void BuscaListaSabor() {
List listaSabor = new ArrayList();
SaborHandler saborHandler = new SaborHandler();
listaSabor = saborHandler.getListaSabor();
Sabor teste = listaSabor.get(0);
System.out.println("enviando: "+teste);
pacoteEnviado = new Pacote(Constantes.SOCKET_DELIVERY_SABOR_LIST, teste);
}[/code]
(Android)recebimento do pacote), o local do erro:
[code] Log.i(“SOCKET”, “Lendo resposta…”);
pacoteRecebido = (Pacote) in.readObject();
Sabor teste = (Sabor) pacoteRecebido.getConteudo(); //aqui da erro!
Log.i("SOCKET", teste.getNome());[/code]
o objeto pacote
[code]package socket.entidade;
import java.io.Serializable;
public class Pacote implements Serializable{
private static final long serialVersionUID = 1L;
private final int cabecalho;
private final Object conteudo;
public Pacote(int cabecalho, Object conteudo) {
super();
this.cabecalho = cabecalho;
this.conteudo = conteudo;
}
public int getCabecalho() {
return cabecalho;
}
public Object getConteudo() {
return conteudo;
}
}
[/code]
o objeto enviado dentro do pacote(servidor, com annotation)
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package modelo.entidade;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlTransient;
/**
*
-
@author renanmarcel
*/
@Entity
@Table(name = “sabor”)
public class Sabor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = “id_sabor”)
private Integer idSabor;
@Column(name = “nome”)
private String nome;
@ManyToMany(mappedBy = “saborList”)
private List pizzaList;public Sabor() {
}public Sabor(Integer idSabor) {
this.idSabor = idSabor;
}public Integer getIdSabor() {
return idSabor;
}public void setIdSabor(Integer idSabor) {
this.idSabor = idSabor;
}public String getNome() {
return nome;
}public void setNome(String nome) {
this.nome = nome;
}@XmlTransient
public List getPizzaList() {
return pizzaList;
}public void setPizzaList(List pizzaList) {
this.pizzaList = pizzaList;
}@Override
public int hashCode() {
int hash = 0;
hash += (idSabor != null ? idSabor.hashCode() : 0);
return hash;
}@Override
public boolean equals(Object object) {
// TODO: Warning - this method won’t work in the case the id fields are not set
if (!(object instanceof Sabor)) {
return false;
}
Sabor other = (Sabor) object;
if ((this.idSabor == null && other.idSabor != null) || (this.idSabor != null && !this.idSabor.equals(other.idSabor))) {
return false;
}
return true;
}@Override
public String toString() {
return “modelo.entidade.Sabor[ idSabor=” + idSabor + " ]";
}
}
[/code]
Obrigado pela ajuda!