Olá pessoal,
Estou com um probleminha na construção de um método do meu Dao Genérico …
A situação é a seguinte …
No momento que estou inserindo dados em um formulário qualquer, tenho alguns combos que exibem dados de outras tabelas relacionadas … ex. cadastro de estados seleciona o pais …
Para que isso funcione tenho escrito um método em cada controller da minha aplicação da seguinte forma …
private Map<String, Object> paisItem = null;
public Map<String, Object> getPaises(){
paisItem = new LinkedHashMap<String, Object>();
for (Iterator<?> iter = paisDao.todos().iterator(); iter.hasNext();){
Pais p = (Pais)iter.next();
paisItem.put(p.getNome(), p.getId());
}
return paisItem;
}
que depois utilizo no formulário assim …
<h:selectOneMenu value="#{estadoController.estado.pais.id}"
id="pais">
<f:selectItems value="#{estadoController.paises}" />
</h:selectOneMenu>
Então o problema é que tenho que escrever isso toda vez em cada controller e repetidas vezes … gostaria de implementar um método no meu Dao genérico que resolvesse isso …
Tentei resolver da seguinte forma mas não adiantou …
public Map<String, Object> listDesc(String desc, String id){
String command = "SELECT obj." + desc + " obj." + id + " FROM " + oClass.getSimpleName() + " obj";
Query query = getEntityManager().createQuery(command);
List result = query.getResultList();
HashMap item = new LinkedHashMap<String, Object>();
for (Iterator<?> iter = result.iterator(); iter.hasNext();){
iter.next();
item.put(result.get(0).toString(), result.get(1));
}
return item;
}