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.
public List<Manutenir> 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;
}
a minha duvida é saber se eu estou passando os parametro (fk_computador=:pat and) da forma correta
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
K
kelvinpinho
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
sim, fk_computador é meu atributo de manutenir e no banco tbm estar como fk_computador.
K
kelvinpinho
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.
Tentei dessa forma antes, continua com o mesmo erro!
romarcio
Você pode postar sua classe Manutenir? Apenas a parte da declaração das variáveis, os métodos não precisa.
K
kelvinpinho
romarcio:
Você pode postar sua classe Manutenir? Apenas a parte da declaração das variáveis, os métodos não precisa.
@EntitypublicclassManutenirimplementsSerializable{@Id@GeneratedValue(strategy=GenerationType.AUTO)privateIntegeridManut;@ColumnprivateDatedataManut;privateStringatividades;@ManyToOne//Relacionamento Muitos para Um@JoinColumn(name="fk_computador",referencedColumnName="patrimonio")privateComputadorfk_computador;@ManyToOne//Relacionamento Muitos para Um@JoinColumn(name="fk_tecnico",referencedColumnName="idUsuario")privateTecnicofk_tecnico;
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.
M
marciopontes
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.
estou no projeto com o Kelvinpinho, obrigado cara …rodou direitinho.