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 :

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;
 
	}
Pourtant ailleurs dans mon code, ça fonctionne :

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;
	}
Je suis en JTA donc pas de commit.