Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Trabalhando com listas no Spring

Olá, estou tendo dificuldades para persistir um Array de id's para o meu banco de dados, a logica que eu segui foi, na hora de fazer uma requisição do tipo POST eu mando no corpo um array com os id's das entidades que quero vincular.

Essa seria a entidade principal:

@Entity
public class Os {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "OS_ID") private Long id;
    private String osNumber;

    // Composições
    @OneToMany private List<Document> documents;
}

E essa seria a que eu quero vincular:

@Entity
public class Document {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Enumerated(EnumType.STRING) private DocumentType docType;

}

E usei a logica que esta no método update() para tentar atualizar:

public class OsUpdate {

    // Atributos a serem atualizados:
    private String osNumber;
    private List<Long> documentsId = new ArrayList<>();

    // Método para atualizar uma OS:
    public Os update(Long id, OsRepository osRepository, DocumentRepository documentRepository) {

        // Procura uma OS no banco de dados pelo seu id:
        Os os = osRepository.getOne(id);

        // Atualiza as informações vindas do banco de dados com as informações vindas do 'OsUpdate':
        os.setOsNumber(this.osNumber);

        List<Document> documentList = new ArrayList<>();

        // Itera a lista de id's, procura os documentos no banco, e adiciona a lista de documentos da OS
        for (int i = documentsId.size(); i <= 0; i--) {
            Document document = documentRepository.getOne(documentsId.get(i));
            documentList.add(document);
        }

        os.setDocuments(documentList);

        return os;
    }

Qual seria um solução alternativa?

1 resposta
solução!

Olá, fiz uns testes e troquei o if() por um forEach() e adicionei o fetchType.eager na minha entidade principal, e funcionou!