Carregamento Lazy [RESOLVIDO]

3 respostas
G

Boa noite pessoal.
Tenho o seguinte mapeamento:

public class News implements Serializable{  
 
   @ManyToOne
   @JoinColumn(name = "CATEGORYID", nullable = false)  
   private Category category;

   private String status;
}


public class Category implements Serializable{  

   @OneToMany(fetch = FetchType.LAZY, mappedBy = "category")  
   private List<News> news; 

   public List<News> getNews() {  
        return news;  
   }
}
Quando faço isso
List listaDeNoticias =  objetoCategory.getNews();
Consigo a lista de notícias da categoria em questão (objetoCategory) sem problemas. Mas eu gostaria de trazer somente as notícias do objetoCategory que estão com o status = "PUBLICADA", continuando usando o carregamento LAZY. É possível fazer isso? Tem como aplicar um filtro em getNews() ? Ou melhor, no carregamento Lazy? Desde já agradeço.

3 Respostas

A

Faz um select dentro do getNews() e coloca pra retornar o resultado desse select.

G

Olá Aurelioaraujo, muito obrigado pela resposta.
Olhando a documentação do Hibernate. Consegui fazer dessa forma;

@OneToMany(fetch = FetchType.LAZY, mappedBy = "category") 
@Where(clause="status='PUBLICADA'")  // faço filtro  pelo atributo status. 
@OrderBy(clause="data desc") // data é um outro atributo, que vai ser meu critério de ordenação
private List<News> news;

Só que sempre vai ser esse filtro quando acionar o método getNews().
Valeu. Até mais

A

Legal, não sabia desse outro método.
Feliz em ter ajudado e aprendido mais.

Criado 7 de julho de 2013
Ultima resposta 10 de jul. de 2013
Respostas 3
Participantes 2