ERRO: HQL - utilizando between e outro parametro

Quando vou utilizar o parametro WHERE m.fk_computador=:pat and m.dataManut BETWEEN :start and :end ele dar o seguinte erro:

HTTP Status 500 - org.hibernate.PropertyAccessException: could not get a field value by reflection getter of pesistence.Computador.patrimonio

mas quando utilizo apenas o intervalo de data WHERE m.dataManut BETWEEN :start and :end ele funciona perfeitamente, gerando a minha lista. segue abaixo o metodo completo.

[code]public List buscarManutenir (String patrimonio, Date data1, Date data2) {
Session ses = getSession();

	Query qr = ses.createQuery("from Manutenir m WHERE m.fk_computador=:pat and m.dataManut BETWEEN :start and :end" );
	qr.setParameter("start", data1);
	qr.setParameter("end", data2);
	qr.setParameter("pat", patrimonio);

	List<Manutenir> listaManutenir = qr.list();
	return listaManutenir;
}[/code]

a minha duvida é saber se eu estou passando os parametro (fk_computador=:pat and) da forma correta

Dá espaço entre “=” e :pat invés de:

m.fk_computador=:pat

Use:

m.fk_computador= :pat

Testa ai.

Abraços.

Fica com DEUS.

fk_computador é um atributa da classe Manutenir? Você o nomeou assim ou é o nome do campo no banco apenas e o atributo tem outro nome?

Não deixe m.fk_computador=:pat sem espaços entre cada caracter, porque vai dar problem, faça assim: m.fk_computador = :pat

[quote=romarcio]fk_computador é um atributa da classe Manutenir? Você o nomeou assim ou é o nome do campo no banco apenas e o atributo tem outro nome?

Não deixe m.fk_computador=:pat sem espaços entre cada caracter, porque vai dar problem, faça assim: m.fk_computador = :pat
[/quote]

sim, fk_computador é meu atributo de manutenir e no banco tbm estar como fk_computador.

[quote=Fexx]Dá espaço entre “=” e :pat invés de:

m.fk_computador=:pat

Use:

m.fk_computador= :pat

Testa ai.

Abraços.

Fica com DEUS.[/quote]

Tentei dessa forma antes, continua com o mesmo erro!

Você pode postar sua classe Manutenir? Apenas a parte da declaração das variáveis, os métodos não precisa.

[code]@Entity
public class Manutenir implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer idManut;
@Column
private Date dataManut;
private String atividades;

@ManyToOne //Relacionamento Muitos para Um
@JoinColumn(name="fk_computador", referencedColumnName="patrimonio")
private Computador fk_computador;


@ManyToOne //Relacionamento Muitos para Um
@JoinColumn(name="fk_tecnico", referencedColumnName="idUsuario")
private Tecnico fk_tecnico;[/code]

Ok, o problema é o seguinte:private Computador fk_computador;
Isso não é uma variável que armazena o ID e sim um objeto que armazena muitas coisas. Computador é uma classe, e você precisa acessar o método getId() dessa classe para ter acesso ao Id.
Então m.fk_computador precisa acessar o id, algo tipo m.fk_computador.id
Não sei como você nomeou seu id em computador, mas acho que agora deu para você entender o que precisa fazer.

[quote=romarcio]Ok, o problema é o seguinte:private Computador fk_computador;
Isso não é uma variável que armazena o ID e sim um objeto que armazena muitas coisas. Computador é uma classe, e você precisa acessar o método getId() dessa classe para ter acesso ao Id.
Então m.fk_computador precisa acessar o id, algo tipo m.fk_computador.id
Não sei como você nomeou seu id em computador, mas acho que agora deu para você entender o que precisa fazer.[/quote]

estou no projeto com o Kelvinpinho, obrigado cara …rodou direitinho.

:thumbup:
Depois coloca o post como resolvido ok!