Problemas Join com Criteria

2 respostas
R

Tenho a Classe Empresa Filial:

@Entity

@Table(name = ORG.FILIAL)

public class EmpresaFilial implements Serializable {

@Id

@ManyToOne(fetch=FetchType.LAZY)

@JoinColumn(name = CGC_NUMERO, referencedColumnName=CGC_NUMERO)

private Empresa empresa;
@Id
  @Column(name = "CGC_FILIAL")
  private String sufixoCNPJ;


  .

.
.
}

A classe empresa:

@Entity

@Table(name=ORG.EMPRESA)

public class Empresa {

@Id

@Column(name=CGC_NUMERO)

private String raizCNPJ;
@Column(name="ID_EMPRESA")
  private int    idEmpresa;
            .
            .
            .

}

Problema: Preciso fazer uma seleção na minha classe Empresafilial, retornar todas as filiais de uma determinada empresa. Na minha Classe EmpresaFilialDAO, estou usando Criteria. Tentei fazer o seguinte:

public List<EmpresaFilial> pegaPorSufixo(String sufixoCNPJ) {
        Criteria c = session.createCriteria(EmpresaFilial.class, ?f?);
        c.createCriteria("empresa",?E?);
        c.add(Restrictions.eq("f.sufixoCNPJ", sufixoCNPJ));
        c.add(Restrictions.eq("e.raizCNPJ","01.243.305"));
        

        return (List<EmpresaFilial>) c.list();
  }

}

Na hora de montar a SQL. Ele não faz o inner join com a Empresa.

2 Respostas

romarcio

Não seria só criar uma busca pelo ID da empresa ou pelo próprio objeto Empresa que vc precisa localizar as filiais?

Você deve ter a tabela EmpresaFilial com a chave estrangeira ID_EMPRESA. E na classe você tem a variavel Empresa, então é só pesquisar direto nessa tabela EmpresaFilial.

public List&lt;EmpresaFilial&gt; getFiliais(Empresa empresa) { 
	return (List&lt;EmpresaFilial&gt;) session.createCriteria(EmpresaFilial.class)
		.add(Restrictions.eq("empresa", empresa)).list(); 
}
R

Value… obrigado…

Criado 20 de maio de 2011
Ultima resposta 24 de mai. de 2011
Respostas 2
Participantes 2