Hola a todos, básicamente tengo dos dudas que no he sido capaz de solucionar:
La primera es tan sencilla como pasarle un Map de países y claves ordenados a una vista para un dropdown, pongo mis códigos:
El list de CountryDao:
Código PHP:
@SuppressWarnings("unchecked")
@Transactional
public List<Country> listOrderByName() {
Session s = HibernateUtil.getSession();
s.beginTransaction();
List<Country> c = null;
try {
//c = (List<Country>)s.createQuery("SELECT c FROM countries c").list();
c = (List<Country>)s.createQuery("SELECT c FROM com.omb.bets.model.country.Country c ORDER BY c.name ASC").list();
//c = (List<Country>)s.createSQLQuery("SELECT id, name FROM countries").addEntity(Country.class).list();
} catch (HibernateException e) {
e.printStackTrace();
}
s.close();
return c;
}
El controller donde obtengo los datos:
Código PHP:
//Obtenemos la lista de paises
List<Country> country = cDao.listOrderByName();
final Map<String, String> countryMap = new HashMap<String, String>();
Iterator<Country> iterador = country.listIterator();
while( iterador.hasNext() ) {
Country c = (Country) iterador.next();
countryMap.put(Long.toString(c.getId()), c.getName());
}
model.addAttribute("country", countryMap);
Y la vista:
Código PHP:
<form:select path="country">
<form:options items="${country}"></form:options>
</form:select>
He tenido que pasar la List a un map porque el list es de objetos de tipo country y me los imprimía como objeto y no id - nombre. En la consulta están ordenados por nombre pero donde creo que se desordenan es al añadirlos al map. ¿Como puedo solucionar esto?
El otro error es algo que me pica, si os fijais en la consulta he estado haciendo pruebas y tengo que poner el paquete entero de la clase de la siguiente forma:
"SELECT c FROM com.omb.bets.model.country.Country c ORDER BY c.name ASC"
Si uso el nombre de la tabla me da el siguiente error:
org.hibernate.hql.ast.QuerySyntaxException: countries is not mapped [SELECT c FROM countries c]
Un saludo y gracias.