<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
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;
}
[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.
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!