Erro em consulta

Pessoal Bom dia!

Estou executando uma consulta e está me retornando um erro, pra explicar melhor vou colocar meu código.

Minha implementação:

public List<HistoricoFindCar> ultimaTransmissaoVeiculo(List<Map> veiculos) throws Exception {
		List<HistoricoFindCar> ultimaTransmissao = null;
		
		try {
			
		ultimaTransmissao = dao.findByNamedQuery("ultimaTransmissaoVeiculo", veiculos);
		
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return ultimaTransmissao;
	}

Minha consulta

 <query name="ultimaTransmissaoVeiculo"><![CDATA[
    	from HistoricoFindCar hist where 
    	hist.objectID = (select max (objectID) 
    				from HistoricoFindCar vei 
    				where vei.veiculo = ?)
    ]]>
    </query>

Essa consulta me retornaria o ultimo registro, mas está dando erro:

ERROR org.hibernate.property.BasicPropertyAccessor:167 - IllegalArgumentException in class: br.com.checkrota.commons.model.BaseModel, getter method of property: objectID
org.springframework.orm.hibernate3.HibernateSystemException: IllegalArgumentException occurred calling getter of br.com.checkrota.commons.model.BaseModel.objectID; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of br.com.checkrota.commons.model.BaseModel.objectID
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of br.com.checkrota.commons.model.BaseModel.objectID

Alguém pode por me ajudar?

Mostre a classe br.com.checkrota.commons.model.BaseModel para ver se ajuda.

Blz!

Classe BaseModel

public abstract class BaseModel implements Serializable {
	/**
	 * Código do objeto
	 */
	protected Long objectID;

	/**
	 * 
	 */
	protected BaseModel() {
		objectID = new Long(-1);
	}

	public void setObjectID(String objectID) {
		this.objectID = Long.valueOf(objectID);
	}
	
	public void setObjectID(Long objectID) {
		this.objectID = objectID;
	}

	public Long getObjectID() {
		return objectID;
	}

	/**
	 * Retorna o código hash da propriedade <code>objectID</code>.
	 * 
	 * @return int código hash da propriedade <code>objectID</code>.
	 */
	public int hashCode() {
		return objectID.hashCode();
	}

	/**
	 * Retorna <code>true</code> se <code>obj</code> for um
	 * <code>BaseModel</code> e se a propriedade <code>objectID</code> de
	 * ambos forem iguais.
	 * 
	 * @param obj
	 *            referência par ser comparada
	 * @return boolean <code>true</code> se objectID de <code>obj</code> for
	 *         igual ao deste objeto.
	 */
	public boolean equals(Object obj) {
		try {
			return this.getClass().equals(obj.getClass()) && objectID.equals(((BaseModel) obj).objectID);
		} catch (Exception ex) {
			return false;
		}
	}
	
	/**
	 * Retorna a String que repesenta a propriedade <code>objectID</code>.
	 * 
	 * @return String que repesenta a propriedade <code>objectID</code>.
	 */
	public String toString() {
		return this.objectID.toString();
	}

	public boolean isNew() {
		return objectID <= 0;
	}

:lol:

Verifica se acontece algum dos casos.

[quote]public class PropertyAccessException
extends HibernateException

A problem occurred accessing a property of an instance of a persistent class by reflection, or via CGLIB. There are a number of possible underlying causes, including

* failure of a security check
* an exception occurring inside the getter or setter method
* a nullable database column was mapped to a primitive-type property
* the Hibernate type was not castable to the property type (or vice-versa) [/quote]

Pois é, não to conseguindo ver onde estou errando. O método “ultimaTransmissao” pede um parâmetro que é o veiculo que será feito a consulta. Neste caso é uma consulta que retorna o ultimo registro de um determinado veiculo.

Minha Action:

SecurityPrincipal securityPrincipal = ((SecurityPrincipal) request.getUserPrincipal());
			List<Map> veiculos = securityPrincipal.getVeiculos(); // nesta linha eu pego o veículo e depois passo para método ultimaTransmissao.
				
			pontos = historicoFindCarService.ultimaTransmissao(veiculos) // O erro está acontecendo justamente aqui.

Alguém me Ajude!!! :-o :?: :lol:

Cara, faz o seguinte(faz um teste).
1 - Muda o nome desse teu atributo para id;
2 - Você tem 2 métodos setObjectID,retira o que ter como parâmetro a String.
3-Renomeia teu getter/setter para getId() e setId(Long id);

Realiza esses teste e depois avisa se deu certo!
Valew!

Tu se refere ao parametro “veiculo”? Se for acho q não vai dar certo, pq ele é uma lista de map.

Essa é a estrutura de veiculos:

[{ID=35, EQUIPMENT_SERIAL=50, OBJECTID=5, DESC=Correio Gutemberg, ENTRADA_PANICO=1}

Ele retorna uma lista com essa estrutura.

N sei se fui claro!

Vlw! :lol:

Assim:

1. public abstract class BaseModel implements Serializable { 2. /** 3. * Código do objeto 4. */ 5. protected Long id; 6. 7. /** 8. * 9. */ 10. protected BaseModel() { 11. this.id= new Long(-1); 12. } 13. 17. 18. public void setId(Long objectID) { 19. this.id= objectID; 20. } 21. 22. public Long getId() { 23. return this.id; 24. } 25. 26. /** 27. * Retorna o código hash da propriedade <code>objectID</code>. 28. * 29. * @return int código hash da propriedade <code>objectID</code>. 30. */ 31. public int hashCode() { 32. return this.id.hashCode(); 33. } 34. 35. /** 36. * Retorna <code>true</code> se <code>obj</code> for um 37. * <code>BaseModel</code> e se a propriedade <code>objectID</code> de 38. * ambos forem iguais. 39. * 40. * @param obj 41. * referência par ser comparada 42. * @return boolean <code>true</code> se objectID de <code>obj</code> for 43. * igual ao deste objeto. 44. */ 45. public boolean equals(Object obj) { 46. try { 47. return this.getClass().equals(obj.getClass()) && id.equals(((BaseModel) obj).id); 48. } catch (Exception ex) { 49. return false; 50. } 51. } 52. 53. /** 54. * Retorna a String que repesenta a propriedade <code>objectID</code>. 55. * 56. * @return String que repesenta a propriedade <code>objectID</code>. 57. */ 58. public String toString() { 59. return this.id.toString(); 60. } 61. 62. public boolean isNew() { 63. return id <= 0; 64. }

Testa essa classe…
Valew!