Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Inserir um objeto que tem um objeto dentro de outro objeto

Olá novamente, estou com um desafio aqui. Fiz um projeto de uma app de um Banco (Banco de dinheiro mesmo) no qual eu posso um inserir, apagar e modificar um cliente, agora quero salvar esse cliente em uma database. Só que o desafio começa ai, nesse cliente tem um objeto Conta com dados da mesma (Numero da conta, saldo da conta corrente,poupança e até saldo de investimento, agencia, etc) e na compilação deu erro porque não foi possível converter esse objeto para um campo, o que é esperado. Ai você me fala, "Passa tudo pro Cliente", então, é que as contas está com polimorfismo, são três tipos de contas que no programa causa um efeito diferente como código diferente gerado na conta, liberação de serviços, etc. Eu vou tentar algumas coisas que achei na net, se caso não funcionar vou postando o que fiz e com meu Desktop ligado vou passando o código, ok? Agora se isso é mais fácil do que parece e se quiseres compartilhar aqui no fórum seja bem vindo, não estou postando código agora porque não estou no meu Desktop agora, quando estiver com ele ligado passo mais informações. Grato por ler até aqui.

4 respostas

Oi Marcelo, tudo bem?

Se a dúvida é como é possível salvar registros que tenham relacionamento, no segundo curso de Room abordamos esses detalhes.

Sobre dúvida de código, se preferir, compartilhe o código via GitHub indicando especificamente a dúvida em relação ao código.

Caso tenha dúvidas de como é possível compartilhar o projeto, dê uma olhada neste tutorial da Alura+.

Ai sim, chegou o grande mestre. Vou aprender a mexer nesse git ai e vou postar algumas coisa. Bom vamos lá, nesse projeto exercício que é o byte bank que tinha falado eu tenho a classe Cliente


public class Cliente {
    private String nome;
    private String cpf;
    private String rg
    private String renda;
    private String senha;

    public Conta conta;

Estava tudo indo bem com as anotations só que chegou no Conta conta, ai o compilador xiô cominho falando que não sabia como guarda a conta já que não é nem TEXT, INTEGER , FLOAT ou BLOB, e eu também não sabia como definir isso. Ai pensei, bom vou definir os dados na Conta também, só que na conta tem isso:

public abstract class Conta implements Servicos{

    private BigDecimal saldoContaCorrente;
    private BigDecimal saldoPoupanca;
    private BigDecimal SaldoInvestimento;
    private List<String> extratoConta;
    private int numeroConta;
    private final int AGENCIA=256;

Coloquei todas as anotations da Room mas não adiantou nada, ai tive a brilhante ideia de dar Ctrl+C, Ctrl+V de Contas para Cliente e descobri da melhor maneira que BigDecimal não é aceito na Room, tô aprendendo :). Passando para double até vai mas quebrou a lógica do meu programa e de cara tive que desistir da minha lista de extrato que eu queria salvar junto com o cliente. Alem do mais o Google deu lucro pros fabricantes de Dipirona pois usei a versão Alpha06 da Room e ela tem bug, até descobrir que tinha que passar para o Alpha04 já tinha ido um frasco fora. Eu refiz em outro projeto passando tudo pro Cliente e em formato String que é mais leve mas mesmo assim que queria passar a List extrato sabe?:/

solução!

Opa Marcelo, é exatamente o que pensei.

O que você está querendo fazer é a configuração de relacionamento entre entidades, no segundo curso é abordado esse assunto. Sobre o BigDecimal, também é apresentado a forma como podemos configurar conversores.

[]s

Ok, vou assistir as aulas e se os sintomas persistirem, eu volto aqui no fórum, obrigado Alex.