Estou recebendo as seguintes mensagens de erro no Eclipse: Description Resource Path Location Type No constructors can be found that match the argument types. Movimentacao.java /1743-jpa-pesquisas-projeto_inicial/src/main/java/br/com/alura/jpa/modelo line 21 JPA Problem
Description Resource Path Location Type The identification variable 'day' is not defined in the FROM clause. Movimentacao.java /1743-jpa-pesquisas-projeto_inicial/src/main/java/br/com/alura/jpa/modelo line 21 JPA Problem
E outras parecidas com a segunda mensagem referentes a month e year. No entanto a classe de teste que executa a query retorna resultados corretos. Essa questão já foi abordada em outro tópico, porém a solução não ficou clara.
@Entity
@NamedQuery(name="MediaDiariaMovimentacao", query="select new br.com.alura.jpa.modelo.MediaComData(avg(m.valor), day(m.data), month(m.data)) from Movimentacao m group by day(m.data), month(m.data), year(m.data)")
public class Movimentacao {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", unique = true, nullable = false)
private Long id;
@Enumerated(EnumType.STRING)
private TipoMovimentacao tipoMovimentacao;
private LocalDateTime data;
private String descricao;
private BigDecimal valor;
@ManyToOne
private Conta conta;
@OneToMany
private List<Categoria> categoria = new ArrayList<>();
public class MovimentacaoDao {
private EntityManager em;
public MovimentacaoDao(EntityManager em) {
super();
this.em = em;
}
public List<MediaComData> getMediaDiaria(){
TypedQuery<MediaComData> query = em.createNamedQuery("MediaDiariaMovimentacao", MediaComData.class);
return query.getResultList();
}
}
public class MediaComData {
private Double valor;
private Integer dia;
private Integer mes;
public MediaComData(Double valor, Integer dia, Integer mes) {
this.valor = valor;
this.dia = dia;
this.mes = mes;
}
public Double getValor() {
return valor;
}
public Integer getDia() {
return dia;
}
public Integer getMes() {
return mes;
}
}