2017-09-22 4 views
1

Avec JPA de données de printemps si j'écris requête comme ceci:Comment savoir si les données sont mises à jour dans la base des données de printemps cassandra

@Query("update User u set u.firstName=?1 where u.id=?2") 
Integer updateFirstName(String firstName,String id); 

retour méthode updateFirstName 0 ou 1 sur la base mise à jour. Mais dans les données du printemps avec cassandra cette requête:

@Query("update User set firstName=?0 where id=?1") 
Integer updateFirstName(String firstName,String id); 

Je reçois null. Est-il possible que je puisse obtenir la confirmation que l'opération de mise à jour est terminée avec succès.

Répondre

0

L'appel de CQL arbitraire à l'aide de méthodes de requête est possible, mais vous devez aligner le type de retour (par exemple,). En outre, une commande UPDATE ne renvoie aucune ligne, par conséquent vous ne recevrez aucun résultat.

La confirmation que votre appel a réussi est la fin normale de la méthode de requête.

+0

J'ai mis à jour ma requête à ceci: '@Query ("mise à jour Paramétrables prenom = 0 où id = 1?") Row updateFirstName (String firstName, String id); 'mais j'obtiens cette exécution:' java.lang.IllegalArgumentException: l'entité ne doit pas être nulle! ' –

0

@Query est utilisé au printemps Data Jpa pour sélectionner les valeurs de DB. Vous pouvez utiliser le @Modifying avec @Query. Il déclenchera la requête annotée à la méthode en tant que requête de mise à jour au lieu d'une requête de sélection.

de sorte que la forme finale du serait

@Modifying @Query("update User set firstName=?0 where id=?1") Integer updateFirstName(String firstName,String id);

+0

L'annotation' @ Modifying' n'est pas disponible dans spring-data-cassandra –