3 votes

Appliquer le montant sur différentes lignes en utilisant Hibernate

enter image description here

Voici le tableau de l'historique des clients et ce sont des activités de vente, maintenant le client a fait un paiement de 200 $, qui s'applique sur l'ID suivant

5 - Solde après application = 0

7 - Solde après application = 0

8 - Solde après application = 0

10 - Solde après application = 85.9

Comment pouvons-nous faire dans Hibernate pour qu'il récupère toutes les lignes (seulement les lignes dans lesquelles la balance s'applique) et les mette à jour en conséquence ?

1voto

Sebastien Lorber Points 9682

Je ne suis pas sûr de comprendre votre question, mais vous pouvez essayer quelque chose qui ressemble à ceci :

public void updateBalance(float newBalance,List<String> ids) {
    String hql = "update UserHistory set balance= :newBalance where id in (:ids)";
    Query query = session.createQuery(hql);
    query.setFloat("newBalance",newBalance);
    query.setParameterList("ids",ids);
    int rowCount = query.executeUpdate();
    System.out.println("Rows affected: " + rowCount);
}

updateBalance(0,Arrays.asList("5","7","8"));
updateBalance(85.9,Arrays.asList("10"));

Cela fonctionne bien si vous devez définir le même solde sur plusieurs lignes.

Si chaque ligne reçoit potentiellement un nouveau solde, vous pouvez alors obtenir les lignes à l'aide de l'API Critères en utilisant quelque chose comme ça :

Restrictions.in("id", Arrays.asList("5","7","8","10"));

et une fois que vous avez vos entités, vous pouvez simplement mettre à jour leur solde et les enregistrer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X