Bom dia pessoal do GUJ!!
Faz tempo que eu não aparecço, agora venho com um probleminha <=) Eu postei tb no JUG do meu estado, aí quem responder primeiro, eu posto a resposta para os dois (JUG e GUJ)…
Eu tenho este SQL para selecionar registros de documento1, sendo que cada um deles pode ter um documento2:
SELECT d1.*, d2.*
FROM documento1 d1
LEFT JOIN documento2 d2 ON d2.d2_ID = d1.d2_ID AND d2.SITUACAO = 'ativo'
Como eu insiro esse AND no meu relacionamento one-to-one?
@Entity
public class Documento1 {
(...)
@OneToOne(mappedBy = "documento1" )
private Documento2 documento2;
(...)
}
Na verdade no banco eu tenho N documento2 apontando para 1 documento1, mas somente um destes documento2 é ativo, o resto é tudo arquivado. E é só o ativo que interessa para documento1, por isso preciso do relacionamento one-to-one. Não se essa informação ajuda…
Eu estou caçando no Google, mas eu não sei como o SQL denomina esse tipo de join e como o hibernate denomina esse tipo de join tb… Estou tentando…
Só que vc deve se atentar pois este where é com base no banco de dados, é um sql, ou seja, o hibernate não converterá isto em sql, ele simplesmente colocará no select tudo que está definido no clause.
lelodois, muito obrigada! Era isso mesmo que eu precisava…
Na verdade eu antes não tinha entendido e fiz errado, e por isso continuei batendo a cabeça…
Mas prestando mais atenção no que vc falou da SQL do clause, aí entendi!
public void setDocumento1 (Documento1 documento1) {
this.documento1= documento1;
}
public Documento1 getDocumento1 () {
return this.documento1;
}
(…)
}[/code]
O que eu queria com isso era contar os documentos 1 ativos que não tinham documentos 2 ativos apontando para ele. O método ficou assim:
public Long contarDocumentos1SemDocumento2() {
return (Long) getDao().createQuery(
"select count(s) from Documento1 d1 where d1.situacao = 'ATIVO' and d1.tipo = PRORROGACAO_PRAZO"
+ " and d1.documento2s is empty").uniqueResult();
}
FUNFOU EEEEEEEEEE
ESPERO QUE AJUDE OUTRAS PESSOAS ^^
Muito obrigada a todos
[quote=alineea]lelodois, muito obrigada! Era isso mesmo que eu precisava…
Na verdade eu antes não tinha entendido e fiz errado, e por isso continuei batendo a cabeça…
Mas prestando mais atenção no que vc falou da SQL do clause, aí entendi!
So complementando a anotação @Where é do hibernate então vc acaba ficando preso a ele se vc precisasse fazer isso por exemplo no eclipselink não seria tão fácil assim.
Já precisei fazer isso uma vez só não me lembro agora como fiz quando lembrar eu posto.