Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/08/2011, 12:01
olaftorres
 
Fecha de Ingreso: agosto-2011
Mensajes: 1
Antigüedad: 13 años, 3 meses
Puntos: 0
JPA filtrar relación OneToMany

Como puedo filtrar los resultados de una relación OneToMany, por ejemplo tengo las entidades País y Estados:

Código:
@Entity
@Table(name = "paises")
public class Paises implements Serializable {
    …
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "pais", fetch=FetchType.LAZY)
    private Collection<Estado> estados;

    …
}
Código:
@Entity
@Table(name = "estados")
public class Estados implements Serializable {
    
    @Column(name = " visible")
    Boolean visible ;

    @ManyToOne
    private Pais pais;
    
    …
}
Al crear una consulta como esta:

Código:
SELECT p FROM Pais p
Obtengo los países con todos sus es dentro de la colección estados; Como puedo filtrar el resultado de esta colección, de acuerdo con el valor del campo visible, para obtener todos los países, pero que dentro de la colección estados solo estén los estados con el campo “visible” con valor true; puedo tomar el resultado y fíltralos en un ciclo, pero lo que me interesa es obtener el resultado filtrado directamente por medio de una consulta. Ya intente esta consulta:

Código:
SELECT p From Pais p, in(p.estados) e where e.visible = 1
Pero obtengo un registro de tipo Pais por casa estaso.