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

@Transactional + MongoDB

Alguém sabe porque o Spring não consegue gerenciar uma "Entity" que volta do Banco? Ao realizar o "set" de qualquer propriedade num ID que já existe, mesmo com @Transactional, não consigo ter sucesso no PATCH e/ou PUT. Sendo assim, o problema só foi resolvido com

repository.save(entidade);

Vou deixar o projeto no GIT para quem quiser acompanhar: https://github.com/diegorighi/fatec-tcc-springboot-mongodb

A classe em questão é a TrabalhadorService.java https://github.com/diegorighi/fatec-tcc-springboot-mongodb/blob/master/src/main/java/br/com/ctps/api/service/TrabalhadorService.java

Vlw!

3 respostas

Não entendi sua dúvida, pq se você quer atualizar realmente o registro você tem que obrigatoriamente usar o .save afinal seu objeto e seu banco de dados não são a mesma coisa, eles tem que ser "sincronizados".

Fala Vinicius! Também pensava assim, mas assistindo a vídeo aula de Spring o professor diz que uma vez que capturado o objeto do banco ele passa a ser gerenciado e qualquer alteração bastaria fazer via SETTER. Mas parece que o MongoDB não funciona da mesma forma que o banco usado no exemplo. Procurei na documentação algo a respeito e não vi nada falando disso

solução!

Oi Diego,

Como o MongoDB não é um banco de dados relacional suportado pela JPA, você vai precisar ajustar o seu código para funcionar de acordo com as regras dele.

Aqui tem um tutorial com alguns exemplos de utilização do MongoDB com Spring Data: https://www.baeldung.com/spring-data-mongodb-tutorial

Bons estudos!