Hibernate Criteria - filtrar por atributo  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
MARCOSTEIXEIRA
Thread.start()

Membro desde: 22/02/2007 09:29:31
Mensagens: 28
Offline

Oi pessoal,

Estou com a seguinte dúvida:

Tenho duas classes:

public class Curso{

private Integer id;
private String nome;
private Disciplina disciplinas;

...
metodos set e get
...

}


public class Disciplina{

private Integer id;
private String nome;
private String periodo; // pode ser "N" (noturno) ou "D" (diurno)

...
metodos set e get
...

}

Agora quero criar uma criteria que retorne um determinado curso e suas respectivas disciplinas. Estou usando o seguinte código:

Criteria select = sessao.createCriteria(Curso.class);
select.setFetchMode( "disciplinas", FetchMode.JOIN );
select.add(Restrictions.like("nome", "Engenharia de Computacao"));

List objetos = select.list();

Até aqui tudo bem, funciona muito bem, ou seja, traz TODAS as disciplinas do curso "Engenharia de Computacao".

Mas, a questão agora é que eu quero apenas as disciplinas de TAL curso que possuam o atributo periodo igual a "N" (noturno).

Já tentei fazer algo como:

Criteria select = sessao.createCriteria(Curso.class);
select.setFetchMode( "disciplinas", FetchMode.JOIN );
select.add(Restrictions.like("nome", "Engenharia de Computacao"));
select.add(Restrictions.like("curso.disciplinas.periodo", "N"));

Mas é retornada a seguinte exceção:

Exception in thread "main" org.hibernate.QueryException: could not resolve property: curso of: tutorial.Curso

Alguém sabe como resolver isso ?

Pode ser também usando a Query em vez da Criteria, o importante é que eu consiga "filtrar" por um atributo de outra classe.

Muito obrigado

Marcos
zepunk
JavaTeenager
[Avatar]

Membro desde: 24/05/2005 11:57:28
Mensagens: 198
Localização: Osasco
Offline

Você irá precisar utilizar um Alias.



Isto deve funcionar. Contanto que seu mapeamento esteja correto.

Abraços..

Perseverança sozinha não ganha guerra, só palavras não conquistam um coração.
[Email] [MSN]
MARCOSTEIXEIRA
Thread.start()

Membro desde: 22/02/2007 09:29:31
Mensagens: 28
Offline

Oi zepunk,

Obrigado pela resposta.

O uso do alias funciona sim, não gerou nenhuma exceção, mas ainda retorna todas as disciplinas do curso.

Utilizei inclusive:

select.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

Mas só faz efeito para os objetos da classe Curso.
Estou utilizando o MySQL, será que é algo relacionado a ele ?

Vc sabe algum outro "esquema" ?

Valew !!
bbmany
JavaTeenager
[Avatar]

Membro desde: 04/12/2007 17:23:24
Mensagens: 188
Offline

Estou com um problema parecedo

e fica dando o erro: eq(java.lang.String,java.lang.Object) in org.hibernate.criterion.Restriction cannot be appiled to (java.lang.String,nome)
Como resolver isto???

- Brena Monteiro -
Pós-graduanda em Engenharia de Software
Bacharel em Sistemas de Informação.
Tecnóloga em Análise e Desenvolvimento de Sistemas.
Analista e desenvolvedora de sistemas web.

monteirobrena.wordpress.com

Twitter
[WWW]
KatsuBoy
Thread.start()
[Avatar]

Membro desde: 03/10/2009 13:11:02
Mensagens: 33
Localização: Itu - SP
Offline

Brothers, salvaram meu dia...
Estava estressadasso por causa de um problema usando Criteria...
e faltava essa p3$$# do Alias..

Vou disponibilizar meu código para o caso de ajudar alguém futuramente


* Fernando Katsukawa *
Desenvolvedor Java, php Drupal
Tecnólogo em Gestão da Tecnologia da Informação
FATEC ITU

www.katsukawa.com.br
[MSN]
Kleber-rr
Virtual Machine Man
[Avatar]

Membro desde: 02/07/2009 12:12:02
Mensagens: 664
Offline

Eae Pessoal, estou com um problema de criteria tb...

Estou com uma aplicação java, com hibernate, banco em postgresql, e pegando uma surra básica com criteria e combos alinhados...

o negócio é o seguinte: estou tentando fazer a seguinte criteria:


Esse método foi idéia de um colega aqui do GUJ que me ajudou a transformar uma query nessa linguagem acima...

a query era:


Só que me retorna esse erro:


Deve ser algum conflito entre do método com o Postgre, mas como eu sou iniciante em java e quase n tenho conhecimento com PostGre, ainda nao consegui descobrir o q é...
Se alguem puder ajudar, agradeço.

bbmany
JavaTeenager
[Avatar]

Membro desde: 04/12/2007 17:23:24
Mensagens: 188
Offline

Qual o tipo do seu "id" no banco de dados?
Se puder coloque o SQL de criação da tabela serviço.
Até breve.

- Brena Monteiro -
Pós-graduanda em Engenharia de Software
Bacharel em Sistemas de Informação.
Tecnóloga em Análise e Desenvolvimento de Sistemas.
Analista e desenvolvedora de sistemas web.

monteirobrena.wordpress.com

Twitter
[WWW]
Kleber-rr
Virtual Machine Man
[Avatar]

Membro desde: 02/07/2009 12:12:02
Mensagens: 664
Offline

bbmany wrote:Qual o tipo do seu "id" no banco de dados?
Se puder coloque o SQL de criação da tabela serviço.
Até breve.


Graças a Deus uma abençoada pra me ajudar!!



segue a tabela:



Agradeço a ajuda.

bbmany
JavaTeenager
[Avatar]

Membro desde: 04/12/2007 17:23:24
Mensagens: 188
Offline

Kleber-rr
Acredito que o problema seja no cast
Tente desmembrar esta linha:

Isto é, tente pegar apenas um resultado, para ver o que a consulta vai retornar.
Aguardo.

- Brena Monteiro -
Pós-graduanda em Engenharia de Software
Bacharel em Sistemas de Informação.
Tecnóloga em Análise e Desenvolvimento de Sistemas.
Analista e desenvolvedora de sistemas web.

monteirobrena.wordpress.com

Twitter
[WWW]
Kleber-rr
Virtual Machine Man
[Avatar]

Membro desde: 02/07/2009 12:12:02
Mensagens: 664
Offline

bbmany wrote:Kleber-rr
Acredito que o problema seja no cast
Tente desmembrar esta linha:

Isto é, tente pegar apenas um resultado, para ver o que a consulta vai retornar.
Aguardo.


bbmany, eu resolvi com ajuda de um colega do guj em outro tópico, o problema era o like. Tinha q ser o eq no lugar.


Valeu a ajuda!!!

bbmany
JavaTeenager
[Avatar]

Membro desde: 04/12/2007 17:23:24
Mensagens: 188
Offline

Que bom que resolveu!
Lembre-se de acrescentar [Resolvido] ao título do tópico.
Até breve.

- Brena Monteiro -
Pós-graduanda em Engenharia de Software
Bacharel em Sistemas de Informação.
Tecnóloga em Análise e Desenvolvimento de Sistemas.
Analista e desenvolvedora de sistemas web.

monteirobrena.wordpress.com

Twitter
[WWW]
Kleber-rr
Virtual Machine Man
[Avatar]

Membro desde: 02/07/2009 12:12:02
Mensagens: 664
Offline

bbmany wrote:Que bom que resolveu!
Lembre-se de acrescentar [Resolvido] ao título do tópico.
Até breve.


Como eu posso alterar o título do tópico??

Kleber-rr
Virtual Machine Man
[Avatar]

Membro desde: 02/07/2009 12:12:02
Mensagens: 664
Offline

ops, eu naum posso mudar o título pq o tópico naum é meu!!! huahuahauha


bbmany
JavaTeenager
[Avatar]

Membro desde: 04/12/2007 17:23:24
Mensagens: 188
Offline

É verdade... desculpe

- Brena Monteiro -
Pós-graduanda em Engenharia de Software
Bacharel em Sistemas de Informação.
Tecnóloga em Análise e Desenvolvimento de Sistemas.
Analista e desenvolvedora de sistemas web.

monteirobrena.wordpress.com

Twitter
[WWW]
Kleber-rr
Virtual Machine Man
[Avatar]

Membro desde: 02/07/2009 12:12:02
Mensagens: 664
Offline

bbmany wrote:É verdade... desculpe


Q isso, tranquilo

 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team