Ajuda na criteria - ManyToMany com atributos

10 respostas
RicardoYukito
Tenho uma class PROCESSO que se relaciona atraves desse relacionamento com PESSOA;
@ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "PARTE_RE", schema = "SYSJURI",
    joinColumns =
    @JoinColumn(name = "PROCESSO_ID"),
    inverseJoinColumns =
    @JoinColumn(name = "PESSOA_ID"))
    private Collection<Pessoa> parteRe = new ArrayList<Pessoa>();
    
    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "PARTE_AUTORA", schema = "SYSJURI",
    joinColumns =
    @JoinColumn(name = "PROCESSO_ID"),
    inverseJoinColumns =
    @JoinColumn(name = "PESSOA_ID"))
    private Collection<Pessoa> parteAutora= new ArrayList<Pessoa>();

o que eu preciso é faze uma criteria que me traga apenas PROCESSOS que contenham a PESSOA que eu passar, tipo :

Criteria c = session.createCriteria(Processo.class);
  c.add(Restrictions.in("parteAutora" , obj));

Me traga todos os processos que contenham essa pessoa como autora.

att.

10 Respostas

von.juliano

Criteria c = session.createCriteria(Processo.class); c.createAlias("parteAutora", "pa"); c.add(Restrictions.eq("pa.id" , pessoa.getId()));Fiz de cabeça, testa ae e vê se resolve!

Flw! :thumbup:

dxos
Criteria c = session.createCriteria(Processo.class);   
c.add(Restrictions.eq("parteAutora", pessoa);

Abs…

von.juliano

dxos:
Criteria c = session.createCriteria(Processo.class); c.add(Restrictions.eq("parteAutora", pessoa);
Abs…

parteAutora é um ArrayList de Pessoas, tem certeza de que isso funciona? :hunf:

Flw! :thumbup:

dxos

von.juliano:
dxos:
Criteria c = session.createCriteria(Processo.class); c.add(Restrictions.eq("parteAutora", pessoa);
Abs…

parteAutora é um ArrayList de Pessoas, tem certeza de que isso funciona? :hunf:

Flw! :thumbup:

Eu sempre uso assim, e sim Funciona :smiley:

qualquer erro posta ai :smiley:

von.juliano

É que eu fiquei na dúvida, dessa forma, o que ele considera para determinar se a pessoa está na lista?

Vlw! Flw! :thumbup:

dxos

Funcionou no seu caso ?

von.juliano

Eu num tenho onde testar agora, por isso perguntei, quero matar a curiosidade! :smiley:

dxos

Entom adiantando…
Qualquer coisa vc pode usar assim :

// aqui você cria um novo criteria para a classe pessoa
Criteria criteriaPessoa = c.createCriteria("pessoa");
//a comparação necessaria
criteriaPessoa.add(Restrictions.eq("codigo", pessoa.getCod()));
RicardoYukito

entao, isso realmente funciona sim em casos de relacionamento manytomany sem atributos, nao sei se influencia mas no meu caso tenho uma classe mapeada com @EmbeddedId,

executando os exemplos passados, dá erro de sintaxe no sql gerado;

org.hibernate.exception.GenericJDBCException: could not execute query

Qundao precisei trazer uma parteRe (Pessoa) a criteria ficou dessa forma :

session = session.getSessionFactory().openSession();
            session.beginTransaction();
            Criteria c = session.createCriteria(ParteRe.class);
            c.add(Restrictions.eq("chaveComposta.processo", p));
             re = c.list();

aqui consigo todas as pessoas que estao na parte Re do meu processo E o processo,

Porem estou numa tela de consulta onde se conseguisse filtrar diretamente pelo processo, alem de facilitar vai diminuir alguns acessos ao banco!
vlww por enquanto!
att.

RicardoYukito

dxos nao havia lido seu ultimo post
funcionou perfeitamente

Criteria c = session.createCriteria(Processo.class);
         Criteria criteriaPessoa = c.createCriteria("parteRe", "pre");
         criteriaPessoa.add(Restrictions.eq("pre.pessoaId", obj.getPessoaId()));

muito obrigado!

Criado 5 de agosto de 2010
Ultima resposta 6 de ago. de 2010
Respostas 10
Participantes 3