Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/11/2013, 13:04
oskrok
 
Fecha de Ingreso: febrero-2006
Mensajes: 43
Antigüedad: 18 años, 2 meses
Puntos: 1
Pasar un Map de países ordenados a un dropdown de la vista

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<CountrylistOrderByName() {
     
Session s HibernateUtil.getSession();
     
s.beginTransaction();
     List<
Countrynull;
     try {
         
//c = (List<Country>)s.createQuery("SELECT c FROM countries c").list();
         
= (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<Countrycountry cDao.listOrderByName();  
  
  final 
Map<StringStringcountryMap = new HashMap<StringString>();
  
  
Iterator<Countryiterador country.listIterator(); 
  while( 
iterador.hasNext() ) {
   
Country c = (Countryiterador.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.