[quote=JonathanSSantos]cria tuas classes…
cria o relacionamento das tuas classes…
salva as perguntas no banco…
salva as respostas no banco…
busca as perguntas no banco…
busca as respostas no banco…
joga para tua jsp… e relaciona elas pelas colunas que uma tem na hora e mostra na tela!
:thumbup: [/quote]
JonathanSSantos, a lógica é essa mesma, só que eu não preciso buscar as perguntas no banco, já que cada resposta está relacionada com determinada pergunta. A questão é mais prática do que teórica. Seria como eu fazer as criterias no DaoEspecífico para respostas e no Bean, e como eu posso chamar essa lista no JSP.
Para facilitar, vou colocar meu o dao e o bean da classe resposta:
====RespostasDao======
[code]public class RespostasDao extends Dao {
private Logger logger = Logger.getLogger(RespostasDao.class);
public RespostasDao(Session session, Class<?> classe) {
super(session, Respostas.class);
}
public Respostas pesquisaRespostasById(Long cod_respostas) {
logger.info("pesquisaRespostasById : " + cod_respostas);
return (Respostas) session.load(Respostas.class, cod_respostas);
}
public Respostas pesquisaRespostasByDescricao(String descricao) {
logger.info("pesquisaRespostasByDescricao : " + descricao);
Criteria c = session.createCriteria(Respostas.class);
c.add(Restrictions.ilike("descricao", descricao + "%"));
c.addOrder(Order.asc("descricao"));
return (Respostas) c.uniqueResult();
}
public Respostas pesquisaRespostasByPerguntas(Long perguntas_cod_perguntas) {
logger
.info("pesquisaRespostasByPerguntas : "
+ perguntas_cod_perguntas);
Criteria c = session.createCriteria(Respostas.class);
c.add(Restrictions.ilike("perguntas_cod_perguntas",
perguntas_cod_perguntas + "%"));
c.addOrder(Order.asc("perguntas_cod_perguntas"));
return (Respostas) c.uniqueResult();
}
public List<String> findByNameSuggest(String busca) {
logger.info("findByNameSuggest : " + busca);
Criteria c = session.createCriteria(Respostas.class);
c.add(Restrictions.ilike("descricao", busca + "%"));
c.addOrder(Order.asc("descricao"));
c.setProjection(Projections.property("descricao"));
return c.list();
}
@SuppressWarnings("unchecked")
public List<Respostas> pesquisaRespostas(String descricao,
Long perguntas_cod_perguntas,
Long unidadeexecutora_cod_unidadeexecutora,
Long orgaogestor_cod_orgaogestor) {
Criteria c = session.createCriteria(Respostas.class);
c.add(Restrictions.ilike("descricao", "%" + descricao + "%"));
c.add(Restrictions.ilike("perguntas_cod_perguntas", "%"
+ perguntas_cod_perguntas + "%"));
c.add(Restrictions.ilike("unidadeexecutora_cod_unidadeexecutora", "%"
+ unidadeexecutora_cod_unidadeexecutora + "%"));
c.add(Restrictions.ilike("orgaogestor_cod_orgaogestor", "%"
+ orgaogestor_cod_orgaogestor + "%"));
return c.list();
}
}[/code]
======RespostasHandler==========
[code]public class RespostasHandler {
private Respostas respostas = new Respostas();
private Long id;
public Respostas getRespostas() {
return respostas;
}
// select para Perguntas
private HtmlSelectOneMenu perguntaSelecionado;
public HtmlSelectOneMenu getperguntaSelecionado() {
return perguntaSelecionado;
}
public void setperguntaSelecionado(HtmlSelectOneMenu perguntaSelecionado) {
this.perguntaSelecionado = perguntaSelecionado;
}
public List<Respostas> getListaRespostas() {
System.out.println("Carregando a lista de Respostas ...");
Session session = HibernateUtil.currentSession();
Dao<Respostas> dao = new Dao<Respostas>(session, Respostas.class);
return dao.list();
}
// select para perguntaHandler
private PerguntasHandler pegaPerguntasHandler() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ELContext elContext = facesContext.getELContext();
ELResolver resolver = facesContext.getApplication().getELResolver();
Object p = resolver.getValue(elContext, null, "perguntasHandler");
return (PerguntasHandler) p;
}
public List<SelectItem> getPerguntasParaComboBox() {
List<SelectItem> lista = new ArrayList<SelectItem>();
// usaremos o id como valor e o nome como label para os SelectItem.
PerguntasHandler handler = pegaPerguntasHandler();
for (Perguntas p : handler.getListaPerguntas()) {
lista.add(new SelectItem(p.getCod_perguntas(), p.getDescricao()));
}
return lista;
}
public String salva() {
System.out.println("Adicionando: " + respostas.getDescricao());
Session session = HibernateUtil.currentSession();
Dao<Respostas> dao = new Dao<Respostas>(session, Respostas.class);
Dao<Perguntas> perguntasDao = new Dao<Perguntas>(session,
Perguntas.class);
// perguntas
Long id_perguntas = Long.valueOf(perguntaSelecionado.getValue()
.toString());
Perguntas p = perguntasDao.load(id_perguntas);
respostas.setPerguntas_cod_perguntas(id_perguntas);
dao.merge(this.respostas);
dao.delete(this.respostas);
this.respostas = new Respostas();
return "sucesso";
}
public String load() {
Session session = HibernateUtil.currentSession();
Dao<Respostas> respostasDao = new Dao<Respostas>(session,
Respostas.class);
this.respostas = respostasDao.load(this.id);
return "pesquisaSucesso";
}
public List<Respostas> getRespostasLista() {
Session session = HibernateUtil.currentSession();
RespostasDao respostasDao = new RespostasDao(session, Respostas.class);
return respostasDao.list();
}
public List<Respostas> getRespostasByPerguntas() {
Session session = HibernateUtil.currentSession();
RespostasDao respostasDao = new RespostasDao(session, Respostas.class);
List<Respostas> lista = respostasDao.pesquisaRespostas(this.respostas
.getDescricao(), this.respostas.getPerguntas_cod_perguntas(),
this.respostas.getUnidadeexecutora_cod_unidadeexecutora(),
this.respostas.getOrgaogestor_cod_orgaogestor());
return lista;
}
public String excluir(ActionEvent event) {
System.out.println("Excluindo: " + respostas.getCod_respostas());
UIComponent link = event.getComponent();
UIParameter param = (UIParameter) link.findComponent("excluir");
Long id = (Long) param.getValue();
Session session = HibernateUtil.currentSession();
Dao<Respostas> respostasDao = new Dao<Respostas>(session,
Respostas.class);
this.respostas = respostasDao.load(id);
respostasDao.delete(this.respostas);
this.respostas = new Respostas();
return "excluido";
}
public void escolheRespostas(ActionEvent event) {
UIComponent link = event.getComponent();
UIParameter param = (UIParameter) link.findComponent("editCod");
Long id = (Long) param.getValue();
Session session = HibernateUtil.currentSession();
Dao<Respostas> dao = new Dao<Respostas>(session, Respostas.class);
this.respostas = dao.load(id);
}
public void validaCase(FacesContext fc, UIComponent component, Object value) {
String valor = value.toString();
if (!valor.matches("[A-Z].*")) {
throw new ValidatorException(new FacesMessage(
"Inicie o nome com letra maiúscula!"));
}
}
}[/code]
Se alguem puder me dizer se os métodos e criterias acima estão corretos, e como eu devo proceder para que me apareça a lista de perguntas com suas respectivas respostas no JSP, agradeço.
Valeu a ajuda!! 