1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Pesquisa com Criteria e Hibernate

Olá pessoal

Suponham o seguinte diagrama de classes:

https://www.filepicker.io/api/file/FqHwqY9QFSM7hSoVOtIy

Então, posso pesquisar o Material pelo título conforme o exemplo:

Criteria c = HibernateUtil.getCurrentSession.createCriteria(Material.class);
c.add(Restrictions.like("titulo","a%"));
List lista = c.list();

Isso me retorna todos os objetos Material (MaterialSimples e MaterialComplexo) cujo título começa com "a".

Mas e se além disso, eu quiser que a consulta retorne apenas os objetos da classe MaterialSimples? Como fazer isso?

Seria algo do tipo:

Criteria c = HibernateUtil.getCurrentSession.createCriteria(Material.class);
c.add(Restrictions.like("titulo","a%"));
c.add(Restrictions.instanceof(MaterialSimples.class)); -- isso não existe, como simular algo do tipo?
List lista = c.list();

Alguém tem uma dica?

Desde já agradeço.

  • não entendi....MaterialSimples não é uma entidade? Troque por HibernateUtil.getCurrentSession.createCriteria(MaterialSimples.class) e busque o titulo(herdado)...

    Thomas Teixeira   28 de jul de 2015
  • talvez...o que vc está procurando é isto: .createAlias

    Thomas Teixeira   28 de jul de 2015
  • MaterialSimples é uma entidade. Meu programa atualmente está tratando com 'if' cada uma das subclasses.

    É exatamente isso que gostaria de mudar.

    Gostaria de instanciar um 'Criteria' apenas da classe mãe e usar 'Restrictions' para filtrar os objetos das subclasses.

    De qualquer forma, obrigado pela dica do '.createAlias()'.

    Rodrigo Silveira   28 de jul de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags hibernate java ou faça a sua própria pergunta.