Pessoal,
Eu possuo as seguintes classes:
Classe Carteira
@Entity
@Table(name = "carteiras")
public class Carteira implements Comparable<Carteira> {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(nullable = false)
private Date data;
@Column(nullable = false)
private BigDecimal patrimonio;
@ManyToOne(optional = false)
@JoinColumn(name = "id_fundo_investimento_cotas")
private FundoInvestimentoCotas fundo;
...
private long getId() {
return id;
}
private void setId(long id) {
this.id = id;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public FundoInvestimentoCotas getFundo() {
return fundo;
}
public void setFundo(FundoInvestimentoCotas fundo) {
this.fundo = fundo;
}
public BigDecimal getPatrimonio() {
return patrimonio;
}
public void setPatrimonio(BigDecimal patrimonio) {
this.patrimonio = patrimonio.setScale(2, BigDecimal.ROUND_HALF_UP);
}
...
}
Classe FundoInvestimentoCotas:
@Entity
@Table(name = "fundos_investimento_cotas")
public class FundoInvestimentoCotas implements Comparable<FundoInvestimentoCotas> {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(unique = true, nullable = false, length = 10)
private String codigo;
@Column(unique = true, nullable = false, length = 50)
private String nome;
@OneToOne(cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = "id_taxa_administracao")
private TaxaAdministracao taxaAdministracao;
@OneToOne(cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = "id_taxa_custodia")
private TaxaCustodia taxaCustodia;
...
private long getId() {
return id;
}
private void setId(long id) {
this.id = id;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo.trim().toUpperCase();
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome.trim();
}
public TaxaAdministracao getTaxaAdministracao(){
return taxaAdministracao;
}
public void setTaxaAdministracao(TaxaAdministracao taxa){
this.taxaAdministracao = taxa;
}
public TaxaCustodia getTaxaCustodia(){
return taxaCustodia;
}
public void setTaxaCustodia(TaxaCustodia taxa){
this.taxaCustodia = taxa;
}
...
}
Preciso realizar uma consulta onde eu recupero todas as carteiras cujas datas estejam dentro de um intervalo e cujos fundos estejam dentro de um conjunto. Então, fiz o seguinte:
query = "select c from Carteira c where c.data between :dataInicial and :dataFinal and c.fundo in (:fundos)";
query.setParameter("dataInicial", dataInicial);
query.setParameter("dataFinal", dataFinal);
query.setParameter("fundos", fundos);
Onde dataInicial e dataFinal são objetos Date e fundos é um Set. Porém, quando executo a consulta, recebo o seguinte erro:
org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.com.bbdtvm.pegasus.modelo.FundoInvestimentoCotas.id
at br.com.bbdtvm.pegasus.repositorios.hibernate.HibernateUtil.queryObjects(HibernateUtil.java:182)
at br.com.bbdtvm.pegasus.repositorios.hibernate.RepositorioCarteirasHibernate.getCarteiras(RepositorioCarteirasHibernate.java:45)
at br.com.bbdtvm.pegasus.controle.ControleConsultaCarteiras.getCarteiras(ControleConsultaCarteiras.java:62)
at br.com.bbdtvm.pegasus.visao.internalframes.InternalFrameConsultaCarteiras.consultar(InternalFrameConsultaCarteiras.java:320)
at br.com.bbdtvm.pegasus.visao.internalframes.InternalFrameBase.actionPerformed(InternalFrameBase.java:257)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Alguém tem alguma idéia que possa me ajudar?