boa tarde.
estou tentando fazer a consulta abaixo utilizando JPA e Hibernateselect new br.com.entrepostosilk.dto.RelatorioFechamentoDTO(tc, sum(p.valor))
from TipoConta tc
inner join Titulo t on t.tipoConta = tc
inner join Parcela p on p.titulo = t
group by tc.id
11:04:46,279 ERROR PARSER:33 - line 1:157: unexpected token: on
11:04:46,281 DEBUG ErrorCounter:28 - line 1:157: unexpected token: on
line 1:157: unexpected token: on
11:04:46,285 ERROR PARSER:33 - line 1:206: unexpected token: on
11:04:46,285 DEBUG ErrorCounter:28 - line 1:206: unexpected token: on
line 1:206: unexpected token: on
select new br.com.entrepostosilk.dto.RelatorioFechamentoDTO(tc, sum(p.valor))
from TipoConta tc
inner join Titulo t on t.tipoConta_id = tc.id
inner join Parcela p on p.titulo_id = t.id
group by tc.id
mas não consigo fazer funcionar de forma alguma.
minhas classes
Titulo@Entity
@NamedQueries( {
//@NamedQuery(name = "titulosPorVencimento", query = "SELECT t FROM Titulo t WHERE t.dataVencimento = :dataVencimento"),
@NamedQuery(name = "titulosPorFornecedor", query = "SELECT t FROM Titulo t WHERE t.fornecedor = :fornecedor"),
@NamedQuery(name = "titulosPorTipoConta", query = "SELECT t FROM Titulo t WHERE t.tipoConta = :tipoConta"),
@NamedQuery(name = "titulosPorTipoDocumento", query = "SELECT t FROM Titulo t WHERE t.tipoDocumento = :tipoDocumento")
})
public class Titulo implements Serializable {
private static final long serialVersionUID = -605302858942248346L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="GEN_TITULO")
@SequenceGenerator(name="GEN_TITULO", sequenceName = "GEN_ID_TITULO")
private Long id;
@Column(nullable = true)
@Temporal(TemporalType.DATE)
private Date dataEmissao;
@Column(nullable = true, length = 255)
private String historico;
@Column(nullable = true, length = 20)
private String numero;
@Column(nullable = true, length = 255)
private String observacao;
@ManyToOne
private TipoDocumento tipoDocumento;
@ManyToOne
private Fornecedor fornecedor;
@ManyToOne
private TipoConta tipoConta;
@Column(nullable = false, length = 10)
@Enumerated(EnumType.STRING)
private Empresa empresa;
@OneToMany(cascade=CascadeType.ALL,mappedBy="titulo", fetch=FetchType.EAGER)
@OrderBy("dataVencimento")
private Set<Parcela> parcelas = new TreeSet<Parcela>(new ComparatorParcelaVencimento());
// gets e sets
}
@Entity
@NamedQueries( {
@NamedQuery(name = "parcelasPorTitulo", query = "SELECT p FROM Parcela p WHERE p.titulo = :titulo")
})
public class Parcela {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="GEN_PARCELA")
@SequenceGenerator(name="GEN_PARCELA", sequenceName = "GEN_ID_PARCELA")
private Long id;
@ManyToOne
private Titulo titulo;
@Column(nullable = false)
@Temporal(TemporalType.DATE)
private Date dataVencimento;
@Column(nullable = true, precision = 15, scale = 2)
private double valor;
@Column(nullable = true)
@Temporal(TemporalType.DATE)
private Date dataPagamento;
@Column(nullable = true, length = 10)
private String parcela;
@Column(nullable = false, length = 25)
@Enumerated(EnumType.STRING)
private StatusTitulo statusTitulo;
// gets e sets
}
@Entity
public class TipoConta implements Serializable {
private static final long serialVersionUID = 1759443150859482624L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="GEN_TIPOCONTA")
@SequenceGenerator(name="GEN_TIPOCONTA", sequenceName = "GEN_ID_TIPOCONTA")
private Long id;
@Column(length = 2, unique = true, nullable = false)
private String codigo;
@Column(length = 50, unique = true, nullable = false)
private String descricao;
// gets e sets
}
public class RelatorioFechamentoDTO {
private TipoConta tipoConta;
private double valorPago;
public RelatorioFechamentoDTO(TipoConta tipoConta, double valorPago) {
this.tipoConta = tipoConta;
this.valorPago = valorPago;
}
// gets e sets
}
Obrigado à todos pela atenção.