JPQL Order by e LIMIT (JSF E JPA)

Boa Tarde Pessoal, estou com problemas para resolver uma query com jpql, preciso que está query fique correta mas não estou conseguindo, estou usando marketin para colocar o ultimo valor do banco no meu gmap, Sou meio leigo com as querys no jpa

Query que preciso que funcione
// QUERY:
// SELECT * from tab_historico
// WHERE idPolicial = 1
// ORDER BY idhistorico DESC
// LIMIT 1

MEU DAO QUE ESTÁ ERRADO, PRECISO COLOCAR A QUERY AQUI
public Historico obterMarket()
{
	String jpql = "from Historico h";
	
	jpql = jpql + " order by h.idhistorico DESC";


	TypedQuery<Historico> comando = this.getEntityManager().createQuery(jpql, Historico.class);

	return  comando.getSingleResult();
}

MEU MANAGED BEAN QUE ESTÁ FUNCIONANDO

package modelo.dominio;

import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;

import org.primefaces.model.map.DefaultMapModel;
import org.primefaces.model.map.LatLng;
import org.primefaces.model.map.MapModel;
import org.primefaces.model.map.Marker;

import modelo.dao.HistoricoDAO;

@ManagedBean(name= “markersView”)
public class MarkersView implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = 1L;
private MapModel simpleModel;

@PostConstruct
public void init() {
    simpleModel = new DefaultMapModel();
	HistoricoDAO dao = new HistoricoDAO();
	
	
    String[] separated = dao.obterMarket().getLatLon().split(",");
    String lat = separated[0];
    String lon = separated[1];
    
    LatLng coord1 = new LatLng(Double.valueOf(lat),Double.valueOf(lon));
      
    simpleModel.addOverlay(new Marker(coord1, "Pacote Armamento FAKE"));
      
}

public MapModel getSimpleModel() {
    return simpleModel;
}

}

Se já tem a solução simples e ágil em SQL pq perder tempo com JPQL?

Sobre o JPQL: https://stackoverflow.com/questions/20679237/jpql-limit-query

Não entendi, amigo. Tem um exemplo de como seria essa solução simples ?

Ta tenso o negócio, não consegui desenvolver a query dessa maneira rs, mas vlw.

O que deu de errado?

Vários amigo, não consegui entender e integrar o exemplo do link q vc mandou, sou meio leigo nessa coisa,

eu tentei com esse exemplo String sql = “SELECT * from tab_historico WHERE idPolicial = 1 ORDER BY idhistorico DESC LIMIT 1”;

Query query = em.createNativeQuery(sql, Historico.class);
query.setParameter(1, idPolicial);
Historico historico = (Historico) query.getSingleResult();
Acabei me perdendo mais ainda kkkk

Pra não perder tempo com configuração de mapeamento, o nome das colunas devem ser iguais aos seus atributos. Exemplo:

select campo_1 as nomeAtributo1, campo_2 as nomeAtributo2 from …

Se o problema continuar, informe a msg de errro.