[hibernate] sub criteria

3 respostas
B

Ola amigos do GUJ,
Estou com um problema com o criteria... o problema é que ele retorna todos os telefones do usuario em vez de exibir somente com o prefixo "(11)" e se eu colocar "(111)" nenhum resultado é exibido.

Classe DAO:
Criteria criteria = session.createCriteria(TbUsuario.class) 
                    .setFetchMode("tb_telefone", FetchMode.JOIN) 
                    .add(Restrictions.like("CNome", nome + "%"));
					

            Criteria subCriteria = criteria.createCriteria("tbTelefones");
             subCriteria.add(Restrictions.like("CTelefone", "(11)%"));
Mapeamento xml do usuario:
<set inverse="true" name="tbTelefones">
      <key>
        <column name="c_id_usuario"/>
      </key>
      <one-to-many class="Modelo.TbTelefone"/>
    </set>
Mapeamento xml do telefone:
<many-to-one class="Modelo.TbUsuario" fetch="select" name="tbUsuario">
      <column name="c_id_usuario"/>
    </many-to-one>
Resultados exibidos: Bruno ([telefone removido] ([telefone removido] ([telefone removido]

Obrigado pela atenção. 8)

3 Respostas

Vini_Fernandes

Cara, tente adicionar todas as restricoes em uma unica query, assim:

Criteria criteria = session.createCriteria(TbUsuario.class)   
.setFetchMode("tb_telefone", FetchMode.JOIN)   
.add(Restrictions.like("CNome", nome + "%")).add(Restrictions.like("CTelefone", "(11)%"));

Ate mais

B

Ola Vini Fernandes,

Fiz o que vc me falou…

Criteria criteria = session.createCriteria(TbUsuario.class) .setFetchMode("tb_telefone", FetchMode.JOIN) .add(Restrictions.like("CNome", nome + "%")) .add(Restrictions.like("CTelefone", "(11)%")) ;

Fiz isso mais da um erro:

[color=red]
INFO: Not binding factory to JNDI, no JNDI name configured
org.hibernate.QueryException: could not resolve property: CTelefone of: Modelo.TbUsuario[/color]

B

Ja refiz tudo e o problema continua alguem sabe resolver?

Criado 13 de outubro de 2009
Ultima resposta 13 de out. de 2009
Respostas 3
Participantes 2