Salve sto facendo un esercizio per quanto riguarda l'applicazione web, e sto riscontrando dei problemi per quanto riguarda la modifica utilizzando il framework Hibernate.
Non so dove possa esserci questo problema. Ho il metodo di modifica in questo modo:
public void modificaProdotto(Prodotto p) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
String hql="update Prodotto SET nome= :nome WHERE id= :id";
Query query = session.createQuery(hql);
query.setParameter("nome", p.getNome());
//query.setParameter("id", p.getId());
//query.executeUpdate();
session.getTransaction().commit();
}
Nella mia Servlet poi tramite il metodo GET mi sono richiamato la funzione in questo modo:
int id = Integer.parseInt(request.getParameter("id"));
CRUD.getInstance().modificaProdotto(p);
List<Categoria> listacat = CRUD.getInstance().visualizzaCategoria();
HttpSession session = request.getSession();
session.setAttribute("listacat", listacat);
RequestDispatcher rd = request.getRequestDispatcher("modifica.jsp");
rd.forward(request, response);
Una volta che mi visualizza tutti i Prodotti associati alle Categorie gli ho passato l'id. Quell'id che vedete e perché mi sono fatto un link chiamando la servlet modifica.
nella mia jsp poi :
<form name="mascheraModifica" action="Modifica" method="POST">
Nome Prodotto <input type="text" name="nome" values="${prodotto.nome}">
<select name="categoria">
<c:forEach var="cat" items ="${listacat}"><tr>
<option value="${cat.id}">
${cat.categoria}</tr>
</option>
</c:forEach>
</select>
<input type="submit">
Tramite il metodo POST mi sono richiamato i parametri e le ho messe in una variabile in questo modo:
String nome = request.getParameter("nome");
int id = Integer.parseInt(request.getParameter("categoria"));
//Prodotto p = new Prodotto();
p.setNome("nome");
Categoria c = CRUD.getInstance().selectById(id);
p.setCategoria(c);
CRUD.getInstance().modifica(p);
response.sendRedirect("ins.html");
Questo e quello che ho fatto ma mi da errore quando clicco su submit della jsp. Please..