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:
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.