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;
}
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);
Código PHP:
<form:select path="country">
<form:options items="${country}"></form:options>
</form:select>
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.