HQL +in

0 respostas
P

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?

Criado 30 de outubro de 2008
Respostas 0
Participantes 1