Bonjour à tous,

Voilà je cherche à faire un update MySql lors du lancement d'un servlet. J'ai auparavant réussi à faire un update mais lorsque je fais un update simple sur un seul champs ça ne marche pas...

Ce code ne marche pas (servlet permettant de rajouter +1 au nombre de clique sur la vidéo dans la base de données):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
int id = Integer.parseInt(req.getParameter("id"));        
Query q = em.createQuery("UPDATE Video v SET v.click = v.click+1 WHERE v.id = "+id);
q.executeUpdate();
Ce code marche (correspond à un autre servlet, servlet permettant d'éditer une vidéo):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
        String title = req.getParameter("title");
        String url = req.getParameter("url");
        String description = req.getParameter("description");
        int id = Integer.parseInt(req.getParameter("id"));
        Category c = em.find(Category.class, Integer.parseInt(req.getParameter("category")));
 
        Query q = em.createQuery("UPDATE FROM Video v SET v.click = v.click+1, v.title = '"+title+"', v.url = '"+url+"', v.description = '"+description+"', v.category = "+c.getId()+" WHERE v.id = "+id);
        q.executeUpdate();
La page me renvoie un message d'erreur au niveau de "q.executeUpdate()"...

Etat HTTP 500 -

type Rapport d''exception

message

description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

exception

javax.persistence.TransactionRequiredException: Executing an update/delete query
org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:96)
fr.zeubeuz.servlet.showVideo.doGet(showVideo.java:33)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/7.0.23.

Apache Tomcat/7.0.23