Resolvendo ObjectNotFoundException do Hibernate ao acessar coleções
Enquanto não entro na área de desenvolvimento de jogos, vou trabalhando na área de desenvolvimento, e aqui no serviço surgiu um problema para que eu pudesse resolver. O cenário era uma associação de muitos para muitos que continham dados inválidos (alguém aà pensou para que serve uma chave estrangeira em tabelas de associação n-n?) e causavam a interrupção da criação da página. Debugando, percebi que só de tentar calcular o tamanho ou iterar pela lista já causava uma exceção ObjectNotFoundException. Depois de pesquisar bastante pela internet, achei algo que solucionou meu problema e resolvi compartilhar com meus leitores aqui.
Este wiki aqui contém informações interessantes sobre o uso do Hibernate, entre elas um item me chamou muito a atenção, utilizando Hibernate com dados sujos. Bastaria eu utilizar a anotação @NotFound(action = NotFoundAction.IGNORE) para o Hibernate passar a ignorar os que fossem inválidos. No site tem um exemplo com uma associação 1-1, para o meu caso ficou mais ou menos assim:
@ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "NOTA_ITEM", joinColumns = { @JoinColumn(name = "nota") }, inverseJoinColumns = { @JoinColumn(name = "item") }) @NotFound(action = NotFoundAction.IGNORE) private List<Item> itens;
Espero que possa ajudar alguém assim como me ajudou ![]()