Valeu Felipe, obrigada mesmo, me desculpe até o incomodo, já percebeu que sou novata no assunto né ;-)
Vou tentar e te retorno.
Até mais.
Em quinta-feira, 9 de janeiro de 2014 17h07min06s UTC-2, Felipe Aron escreveu:
-- Vou tentar e te retorno.
Até mais.
Em quinta-feira, 9 de janeiro de 2014 17h07min06s UTC-2, Felipe Aron escreveu:
Vamos lá:Bom, eu uso e recomendo o tratamento isolado dos objetos para gravação no banco de dados, como exemplifiquei no e-mail anterior.Porém é possível fazer do teu modo, inserindo diretamente os itens no objeto produto, porém é necessário associar um Session() ao objeto. Veja um novo exemplo (fiz o teste aqui):Pedido pedido = new Pedido();pedido.__setDaoSession(Dao.getSession(this)); pedido.getItens().add(new PedidoItem());pedido.getItens().add(new PedidoItem());pedido.getItens().add(new PedidoItem());int qtde = pedido.getItens().size();new AlertaToast(this, String.valueOf(qtde), Toast.LENGTH_SHORT);...O Toast() vai mostrar 3 (qtde de itens). Se não associar uma Session ao objeto ele causará o exception.[ ! ] O Dao.getSession() é uma classe singleton que criei pra gerenciar as conexões no app. e o AlertaToast() é uma classe que criei pra "agilizar" o Toast no projeto. Altere ao seu modo. :DEspero que isso lhe ajude a clarear mais um pouco!Se tiver dúvida manda ai, que se eu souber ajudo sem problemas. :DEm 9 de janeiro de 2014 16:38, Marcela <marcel...@gmail.com> escreveu:Entendi a lógica.
Mas ainda tem um trecho do código que não atende, no meu caso, que é onde você diz: "populo os itens de acordo com a seleção do usuário".
Não sei como esta a estrutura da sua aplicação, mas o meu "popular" dos itens, está em uma camada diferente do salvar, logo preciso recuperar de alguma forma os itens ja populados e eh nessa parte que estou enroscando, na obtenção do itens populados.
De forma grosseira, hj eu faço assim:MinhaActivity {
.....
Pedido p = new Pedido();
p.setDescricao("pedido xyz");
Item i = new Item();
i.setDescricao("item um");
...
lista.add(i);
//e aqui seria minha tentativas, para entao conseguir obeter a lista na classe que faz o insert
p.setItem(lista); //mas nao existe este metodo, o greendao nao gera
//ou
p.getItens().addAll(lista); //mas da erro pq getItens ainda é null
}
Em resumo, minha dificuldade é essa, "passar" a lista para um objeto e tentar recuperá-la no insert.
Obrigada por enquanto.
Em quinta-feira, 9 de janeiro de 2014 14h11min03s UTC-2, Felipe Aron escreveu:Eu sigo a seguinte "regra" para salvar o pedido:Tenho 2 objetos:Pedido pedido = new Pedido();List<PedidoItem> Itens = new ArrayList<PedidoItem>();Ao salvar, eu preencho os dados do pedido e populo os itens de acordo com a seleção do usuário.1) Salvo o pedido -- long id = ...session().getPedidoDao().insert(pedido); Inserindo o pedido já tenho id do mesmo.2) Agora só alimentar o idPedido no filho e salva-lo:for (PedidoItem item : lItens) item.setIdPedido(id);...session().getPedidoItemDao().insertinTx(lItens); Se carregar o pai novamente os filhos estarão lá.O greenDao apesar de possuir relações master/detail ele trata cada tabela/classe de forma separada, e relações sempre trata apenas como leitura. O que havia dito no email anterior realmente está errado.Em 9 de janeiro de 2014 13:57, Marcela <marcel...@gmail.com> escreveu:
Ola Felipe,
mesmo alterando conforme sua sugestão cai no mesmo erro, pois ao passar pelo getItens() da classe pedido ele continua nulo e a exceção eh lancada:
public List<Item> getItens() {
if (itens == null) {
if (daoSession == null) {...
throw new DaoException("Entity is detached from DAO context");
}
Em quinta-feira, 9 de janeiro de 2014 13h36min55s UTC-2, Felipe Aron escreveu:Marcela não existe SET para lista "filho", porém existe o método addAll() no GETExemplo:List<PedidoItem> lItens = new ArrayList<PedidoItem>();pedido.getItens().addAll(lItens); Lembrando que ao salvar no DB, é preciso salvar tanto o pai quanto filho. Somente um Insert() no pai não incluirá os filhos.Em 9 de janeiro de 2014 11:25, Marcela <marcel...@gmail.com> escreveu:
Olá Pessoal,
estou com dificuldade para persistir uma lista de filhos no objeto pai, quando mando inserir o pai.getListaFilhos() esta nullo, porem o greendao nao me gerou o metodo pai.setListaFilhos(...), como que a magia acontece? Em que momento o pai recebe a lista de filhos?
filho.setNome("Ana");
filhos.add(filho);
...
pai.setNome("Jose");
pai.setFilho(filho);
...
/*antes de fazer o insert, segundo a API (http://greendao-orm.com/docum), devo fazer um get da Lista: 1. Get the to-many Java List */entation/relations/
List filhos = pai.getFilhos();
/* mas ao fazer o getFilhos() cai no erro: */
throw new DaoException("Entity is detached from DAO context");
Obrigada
--To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group..com .--سمووحخ ̷̴̐ خ ̷̴̐ خ ̷̴̐ خ امارتيخ ̷̴̐ خAnalista-Programador--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com .
For more options, visit https://groups.google.com/groups/opt_out .
--سمووحخ ̷̴̐ خ ̷̴̐ خ ̷̴̐ خ امارتيخ ̷̴̐ خAnalista-Programador--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com .
For more options, visit https://groups.google.com/groups/opt_out .
--سمووحخ ̷̴̐ خ ̷̴̐ خ ̷̴̐ خ امارتيخ ̷̴̐ خAnalista-Programador
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.






0 comentários:
Postar um comentário