Bonjour à tous,
J'ai comme entity : Book, OrderLine et Order.
Une orderLine pointe sur un book et un order.
Je n'arrive pas à mettre à jour mon orderLine, voici ma fonction avec des commentaires qui vont bien :
Pourtant ailleurs dans mon code, ça fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 // Ajouter au panier public Order addInOrder(Book book, int orderId) { //Vérification si une ligne existe déjà avec ce livre TypedQuery<OrderLine> queryName = em .createQuery( "Select cl From OrderLine cl Where order.id = :orderId AND book.isbn = :isbn", OrderLine.class); queryName.setParameter("orderId", orderId); queryName.setParameter("isbn", book.getIsbn()); //List car getSimpleResult plante si il est vide... List<OrderLine> orderLine = queryName.getResultList(); //Si il n'y a pas d'orderLine avec ce livre dans notre order if (orderLine.size() == 0) { //On rechercher notre order en base TypedQuery<Order> queryName2 = em.createQuery( "Select cl From Order cl Where cl.id = :orderId", Order.class); queryName2.setParameter("orderId", orderId); Order Order = queryName2.getSingleResult(); //on créé une nouvelle ligne OrderLine orderline = new OrderLine(); orderline.setBook(book); orderline.setQuantity(1); // On fait en sorte que notre order ai cette ligne ? Automatique ? // Si je met un persist(orderline) j'ai l'erreur Caused by: javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Integer } else { //Si on a trouvé une ligne avec ce livre, on rajoute 1 à la quantité de livre int quantity = orderLine.get(0).getQuantity(); quantity++; orderLine.get(0).setQuantity(quantity); // Ne fait apparement rien sauf enlever la police rouge de ma quantité quand je pointe mon objet avec ma sourie // comme si il l'avait mis à jour.... em.persist(orderLine.get(0)); } // Récupération de notre order mis à jour... ou pas... TypedQuery<Order> queryName2 = em.createQuery( "Select cl From Order cl Where cl.id = :orderId", Order.class); queryName2.setParameter("orderId", orderId); //Récupération de l'ancien order, il n'est pas à jour, la ligne non plus. Order order2 = queryName2.getSingleResult(); //Obligé de retourner notre order pour mettre notre Order de notre bean à jour ? return order2; }
Je suis en JTA donc pas de commit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // Changer le mot de passe public User updateMdp(User user, String mdp) { User userM = em.find(User.class, user.getLogin()); userM.setMotDePasse(mdp); return userM; }
Partager