2
respostas

A entidade Compras não está salvando o Json corretamente nos itens.

O atributo itens da Compra não estão pegando o json. Eu já debuguei várias vezes e era pra dar tudo certo. No momento que estou salvando a compra - conseguir ver pelo debug que o json estava sendo passado certo. só que depois de persistir no banco de dados, quando eu vou conferir aparece errado. No atributo intens aparece uns números como "50649". não aparece nenhuma mensagem de erro para isso, simplesmente salva um valor errado.

Em CarrinhoCompras:

public void finalizar(Usuario usuario) {
        Compra compra = new Compra();
        compra.setUsuario(usuario);
        compra.setItens(toJson());
        compraDao.salvar(compra);
    }

    private String toJson() {
        JsonArrayBuilder builder = Json.createArrayBuilder();

        for (CarrinhoItem item : itens) {
            builder.add(Json.createObjectBuilder()
                .add("titulo", item.getLivro().getTitulo())
                .add("preco", item.getLivro().getPreco())
                .add("quantidade", item.getQuantidade())
                .add("total", getTotal(item))
            );
        }

        return builder.build().toString();
    }

até aqui. eu conseguir ver debugando que o json estava indo correto, mas por alguma razão desconhecida na hora de persistir, ele salva um número no lugar.

CompraDao:

public class CompraDao implements Serializable {

    private static final long serialVersionUID = -7499464687101467281L;

    @PersistenceContext
    private EntityManager manager;

    public void salvar(Compra compra) {
        System.out.println(compra.toString());
        manager.persist(compra);
    }
}
2 respostas

Eu tirei a marcação @Lob que estava em itens e passou a funcionar corretamente.

porque será que não consegui com @lob?

O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!