Olá Willian,
  Segue abaixo com criteria (estou usando JPA2, okey?)
  
  final CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
  
  final CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(EstadoVO.class);
  
  final Root estadoRoot = criteriaQuery.from(EstadoVO.class);
  
  final List criteriaList = new ArrayList();
  
  Predicate predicate= criteriaBuilder.equal(
                    estadoRoot.get("fk_pais"). get("id"),
                    <CODIGO_PAIS>);
  
  criteriaList.add(predicate);
  
  criteriaQuery.select(criteriaBuilder.construct(EstadoVO.class, estadoRoot.get("id"),
  
  estadoRoot.get("nome")));
  
  criteriaQuery.where(criteriaBuilder.and(criteriaList.toArray(new Predicate[0])));
  
  criteriaQuery.orderBy(criteriaBuilder.asc(estadoRoot.get("nome")));
  
  final TypedQuery query = entityManager.createQuery(criteriaQuery);
  
  return query.getResultList();
  
  --- Em java-br@yahoogrupos.com.br, Willian Vag <willian.vag@...> escreveu
  >
  > Olá pessoal, Boa Tarde!
  > 
  > Estou com dificuldade na construção de uma Criteria do Hibernate
  > annotation, o que eu preciso construir na criteria eu consegui fazer
  > utilizando uma Query, mas como que fica com a Criteria ?
  > 
  > Query Funcionando:
  > 
  > *Query select = sessao.createQuery("from Estados x where x.ID_PAIS = :id ");
  > *
  > *select.setInteger("id", codigo);*
  > 
  > Segue abaixo o mapeamento das minhas duas classes
  > 
  > 
  > Classe País
  > 
  > *@Id*
  > *@GeneratedValue(strategy = GenerationType.AUTO, generator = "PAIS_seq")*
  > *@Column(name="ID", unique=true, nullable=false)     *
  > *private int id;*
  > *@Column(name="NOME_BR", length=100)                 *
  > *private String nomeBR;*
  > *@Column(name="ativado")                             *
  > *private boolean ativado;*
  > 
  > 
  > Classe Estado
  > 
  > *@Id*
  > *@GeneratedValue(strategy = GenerationType.AUTO, generator = "ESTADO_seq")*
  > *@Column(name="ID")                      *
  > *private int     id;*
  > *@Column(name="NOME", length=100)        *
  > *private String  nome;*
  > *@Column(name="SIGLA_2", length=2)       *
  > *private String  sigla2;*
  > *@ManyToOne(fetch= FetchType.EAGER)
  > *
  > *@JoinColumn(name="ID_PAIS")*
  > *@Fetch(FetchMode.JOIN)                  *
  > *private PaisVO fk_pais;*
  > *
  > *
  > Desde já Agradeço a todos
  >
  
  
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br
0 comentários:
Postar um comentário