Olá boa tarde, gostaria de saber se haveria possibilidade de ser feito um relacionamento @OneToMany com uma SQL para ser executada nesse relacionamento. Bom a ideia é trazer somente registros com data menor de 3 dias. Segue abaixo o relacionamento:
Relacionamento unidirecional, ou seja, sempre vai trazer tudo a não ser que eu execute um filter pra trazer o que eu realmente quero, com uma sql ou hql embutida resolveria meu problema. Fico no aguardo. Obrigado.
Olá asandrob obrigado por responder, eu só não entendi a sintaxe de aonde irei colocar a hql no relacionamento, se puder colar um exemplo de relacionamento com hql eu ficaria grato.
Quando penso em hql com relacionamento penso em algo assim:
@OneToMany(“from objeto where objeto.sisnoticias.data >= dataDesejada”)
[quote=cristianovieira]Olá asandrob obrigado por responder, eu só não entendi a sintaxe de aonde irei colocar a hql no relacionamento, se puder colar um exemplo de relacionamento com hql eu ficaria grato.
Quando penso em hql com relacionamento penso em algo assim:
@OneToMany(“from objeto where objeto.sisnoticias.data >= dataDesejada”)[/quote]
Cristiano, a HQL não é responsável pelo relacionamento. O que é responsável pelo relacionamento são as anotações que tu faz nas tuas classes de modelo.
HQL é uzado para recuperar os dados, é semelhante a SQL, só que a lógica é um pouco diferente.
Se me permite, eu te sugiro dar uma olhada nesta apostila: http://www.k19.com.br/downloads/apostilas-java/k19-k21-persistencia-com-jpa2-e-hibernate
Aqui tu vais encontrar um bom material sobre JPA, isso inclui uma boa noção sobre relacionamentos e JPQL(HQL é quase a mesma coisa).
Olá asandrob, correto, talvez eu não tenha me expressado corretamente, mas o que eu preciso é o seguinte, o relacionamento ja está pronto com as anotações, o que preciso é que ao invés do relacionamento recuperar todos os registros da tabela do relacionamento ele recuperar apenas o que tiver na HQL.
Então podes usar uma NamedQuery:
Põe isso no teu modelo
E no DAO:
Query query = manager.createNamedQuery("Objeto.noticiasRecentes");
query.setParameter("dataDesejada", coloca aqui a data que tu precisas);
List<Objeto> noticiasRecentes = query.getResultList();
Pois então, eu utilizo aqui dao generico só precisava mesmo colocar a query na declaração do relacionamento, ja possuo métodos de pesquisa. A ideia mesmo era colocar a hql dentro da declaraçao do relacionamento. Mas blz, deu a entender que o que estou querendo fazer não existe. De qualquer forma eu agradeço a atenção asandrob
Mas o que eu estava tentando fazer não tem nenhum vinculo com o dao generico e sim com a anotação do bean que seria, toda vez que aquele relacionamento for atendido ele irá executar a sql restringindo assim o que vem do banco para atender o relacionamento.