Olá pessoal.
Tô com um problema em HQL (comecei há pouco tempo a trabalhar com ela).
No sistema, um associado possui alguns lançamentos (débitos). Quero listar os lançamentos de um determinado associado entre um período de datas.
A classe Associado.java que possui um ArrayList de Lancamento
@Entity
@Table(name = "Associado")
public class Associado implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name="cpf", unique = true, nullable = false, length = 14)
private String cpf;
@OneToMany(mappedBy = "associado", cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private List<Lancamento> lancamentos = new ArrayList<Lancamento>();
// getters and setters
A classe Lancamento.java
@Entity
@Table(name = "Lancamento")
public class Lancamento implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "valor", precision = 10, scale = 2)
private BigDecimal valor;
@Temporal(TemporalType.DATE)
@Column(name = "data")
private Calendar data;
@ManyToOne
@JoinColumn(name = "associado_id")
private Associado associado;
@Temporal(TemporalType.DATE)
@Column(name = "dataPagamento")
private Calendar dataPagamento;
Utilizando SQL, seria um código similar a esse:
SELECT * FROM Lancamento WHERE associado_id = 4 and data BETWEEN '1999-01-01' AND '2011-07-25'
Então, a dúvida é: qual seria o código HQL que fornece o mesmo resultado dessa instrução em SQL? (lista todos os lançamentos do associado com id = 4 entre o período de 01/01/1999 e 25/07/2011)
Obrigado a todos que ajudarem.
