Gostaria de ajuda para fazer o select abaixo com criteria. Conheço o básico de hibernate e estou apanhando pra fazer. E tem que ser com criteria. Obrigado.
select
tab1.codTab1,
tab1.nomeTab1,
tab2.codTab2,
tab2.nomeTab2
from
Tabela1 tab1,
Tabela2 tab2
where tab1.id=tab2.id and
tab1.id2=tab2.id2;
Como a comparação é apenas por ID, não precisa fazer mais nada além disto.
W
Winthorp
coloca aqui a forma como tu criou as classes pra esse tipo de mapeamento.
publicclassMapaORMextendsAbstractORM{privateORMidid;privateStringnome;privateJGeometryTypepoligono;privateDatedataAtualizacao;privateSetregras;privateIntegerstatus;//getters e setters}//Tabela de relacionamento entre MapaORM e ContratoORMpublicclassRegraORMextendsAbstractORM{privateRegraORMidid;privateMapaORMmapaORM;privateContratoORMcontratoORM;//getters e setters}publicclassContratoORMextendsAbstractORM{privateContratoORMidid;privateSetgrupos;<-------------temquecarregaressesgruposprivateMapaORMmapa;privateSetregrasCerca;//outros atributos//getters e setters}
Se na classe da Tabela 1 você tem um atributo do tipo classse Tabela 2, basta fazer assim um consulta simples como esta:
A tabela2 não é atributo na tabela1.
Na verdade, na tabela2 (ContratoORM) tem um set de outra classe que precisa ser carregada nessa busca.
CharlesAlves
Tenta assim
Criteria criteria = session.createCriteria(tab1.class);
/*no primeiro parametro vem o nome do atributo
*da classe que representa a tab2 na classe
*/
criteria.createAlias("grupos", "tab2");
criteria.add(Restrictions.eq("tab2.id", tab1.getId()));
criteria.add(Restrictions.eq("tab2.id2", tab1.getId2()));
criteria.list();
fiz isso meio de cabeça pode ser que tenha algum erro de digitação mas é por ai, vê se consegue e manda o feedback
W
Winthorp
CharlesAlves, obrigado pela atenção.
Na verdade, já deu uma mudada na pesquisa. As classes envolvidas são as mesmas, mas a consulta será na tabela de relacionamento RegraORM. O resultado trará uma lista.
Devo pegar essa lista e verificar se os valores existem na tabela ContratoORM, algo do tipo:
Acho que a sintaxe está errada, mas é só pra exemplificar. Utilizando criteria.
Tenho que fazer isso urgente, meu pescoço está em jogo. :´-(
Obrigado.
romarcio
Ta dificil de entender porque o seu exemplo busca id1, id2… Se colocasse o cenário real ficaria mais fácil.
Mas, tenta algo assim:
Tenho que fazer um modal que apresente certos dados que vem dessas tabelas.(mostradas acima)
Serão selecionados um ou mais checkbox de uma tela e clicar num botão EXCLUIR onde serão passados para a busca os id1 e id2 que correspondem ao objeto MapaORM.
Essa busca será feita na tabela de relacionamento RegraORM que retornará uma lista de valores cadastrados.
Verificar se os itens dessa lista existem na tabela ContratoORM. Os valores desse objeto serão apresentados no modal.
Espero que tenha ficado menos confuso e agradeço a atenção.