Надеюсь, что somebaody может мне помочь. У меня есть две организации, связанные с OneToMany. Первое:JPA-запрос, отфильтрованный по свойству коллекции в отношении OneToMany
@Entity
@Table(name = "repartos")
@XmlRootElement
public class Repartos implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@NotNull
@Column(name = "fecha")
@Temporal(TemporalType.DATE)
private Date fecha;
@OneToMany(cascade = {CascadeType.ALL}, mappedBy = "repartoId")
public List<RepartosDetalle> repartosDetalleList;
.....
А потом на другой:
@Entity
@Table(name = "repartos_detalle")
@XmlRootElement
public class RepartosDetalle implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@JoinColumn(name = "reparto_id", referencedColumnName = "id")
@ManyToOne(optional = false)
private Repartos repartoId;
@Column(name = "descargado")
@Convert(converter = BooleanOneZeroConverter.class)
private boolean descargado;
public RepartosDetalle() {
}
public RepartosDetalle(Repartos repartoId) {
this.repartoId = repartoId;
}
public Repartos getRepartoId() {
return repartoId;
}
public void setRepartoId(Repartos repartoId) {
this.repartoId = repartoId;
}
public boolean isDescargado() {
return descargado;
}
public void setDescargado(boolean descargado) {
this.descargado = descargado;
}
}
То, что я пытаюсь получить это все Repartos данные о дате и где они имеют Аль мере один RepartosDetalle со свойством descargado = TRUE. Я пытаюсь выполнить следующий запрос, но я не получаю никакого результата.
@Override
public List<Repartos> buscarPorFechaDescargados(Date searchDate) {
Query q = em.createQuery("SELECT e FROM Repartos e "
+ "WHERE e.fecha = :searchDate"
+ " AND e.repartosDetalleList.descargado=TRUE");
q.setParameter("searchDate", searchDate);
return q.getResultList();
}
Есть ли способ сделать этот запрос, используя одно из значений свойства коллекции? Большое спасибо и хорошие выходные.