I am doing a query in hibernate and it gives me an error when doing it and I think it is an error when setting the parameter.
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Could not locate ordinal parameter [1], expecting one of []
at org.hibernate.query.internal.ParameterMetadataImpl.getOrdinalParameterDescriptor(ParameterMetadataImpl.java:154)
at org.hibernate.query.internal.ParameterMetadataImpl.getQueryParameter(ParameterMetadataImpl.java:204)
at org.hibernate.query.internal.QueryParameterBindingsImpl.getBinding(QueryParameterBindingsImpl.java:182)
at org.hibernate.query.internal.AbstractProducedQuery.setParameter(AbstractProducedQuery.java:507)
at org.hibernate.query.internal.NativeQueryImpl.setParameter(NativeQueryImpl.java:613)
at org.hibernate.query.internal.NativeQueryImpl.setParameter(NativeQueryImpl.java:62)
this is my query
public static ArrayList CiudadesDeUnPais(short id) {
short p = id;
String nombreCiudad;
ArrayList<String> nCiudades = new ArrayList();
Session sesion = NewHibernateUtil.getSessionFactory().openSession();
org.hibernate.Transaction tr = sesion.beginTransaction();
Query consulta = sesion.createNativeQuery("SELECT city FROM City where country_id =:id", City.class).setParameter(id, p);
nCiudades = (ArrayList<String>) consulta.getResultList();
return nCiudades;
}
Try passing the parameter name:
Another option is to pass the parameter by position, but it is more robust to pass it by name, in case the query evolves:
For more information: https://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/Query.html#setParameter(java.lang.String,%20java.lang.Object)