2017-10-19 16 views
0

J'ai une simple requête de mise à jour juste pour vérifier si la requête de mise à jour fonctionne:Impossible d'obtenir la requête de mise à jour pour fonctionner avec Hibernate

this.openDBTransaction(); 
Query updateQuery = session.createQuery(
     "UPDATE User AS usr SET usr.failedLogins=666 WHERE usr.id='USER_3000'" 
); 

int result = updateQuery.executeUpdate(); 
this.closeDBTransaction(); 

mais en quelque sorte DB est pas mise à jour avec la valeur souhaitée. result est venu comme 1 si quelque chose a eu lieu mais à coup sûr ne pas mettre à jour la requête.

Qu'est-ce qui se passe?

Répondre

1

Vous devez utiliser l'annotation @Transactional afin que le compilateur sait que la transaction manipule la base de données, permet ainsi d'effectuer des requêtes de manipulation de données ou il suffit de l'exécuter comme une définition de données requête de langue. Regardez l'extrait de code ci-dessous, par exemple,

@Transactional 
public Employee editEmployee(Employee employee) { //employee is the data you got through post 
    return entityManager.merge(e1); 

} 

En outre, la meilleure pratique consiste à mettre en œuvre toujours Interface objet d'accès aux données et sa mise en œuvre et de définir vos requêtes dans la mise en œuvre. J'espère que cela aide.

+0

J'ai implémenté cela en tant que DEO et mis à '@ Transactionl' mais simple requête juste' UPDATE' il ne fonctionne pas. – JackTheKnife

+1

Avez-vous essayé d'utiliser this.commit()? S'il vous plaît regarder dans, https://www.tutorialspoint.com/hibernate/hibernate_examples.htm –

+0

Yup. Cela a fait l'affaire – JackTheKnife