2017-09-26 2 views
1

J'ai créé une procédure qui met à jour une ligne de table dans DB et renvoie une chaîne spécifique (par exemple 'done') après la mise à jour renvoie une réponse différente si la valeur n'est pas mise à jour échouer').appel de procédure ne fonctionne pas à partir de l'appel java

Lors de l'appel de l'outil MySQL, il est la mise à jour de la table et en retournant la valeur en réponse

call LoginCheck('9111111114','AGGR001002','11d3ad9315b7be5dd53b31a273b3b3aba5defe700808305aa16a3062b76658a791','DIST001007'); 

Cependant quand je fais appel à la même procédure à partir du code Java, il est de retour la réponse appropriée à-dire « fait », mais quand je Je vérifie la table il semble qu'il n'a pas mis à jour la rangée de table respective.

factory = DBUtil.getSessionFactory(); 
Session session = factory.openSession(); 
Transaction transaction = session.beginTransaction(); 
String status = "7000"; 
List objectList = null;  
SQLQuery query = session.createSQLQuery("call LoginCheck(:userid,:AggId,:Password,:id)"); 
    query.setString("userid", userid); 
    query.setString("AggId", AggId); 
    query.setString("Password", Password); 
    query.setString("id", id); 

    objectList = query.list(); 

J'ai déjà essayé query.setParameter et query.ExecuteUpdate()

S'il vous plaît laissez-moi savoir si quoi que ce soit d'autre est nécessaire de mon côté.

+1

Avez-vous vérifié les paramètres de validation automatique du datasorce MySQL dans la configuration de votre programme? Le fait que la procédure renvoie la valeur correcte, mais la base de données n'est pas mise à jour, suggère que la transaction n'est pas validée. –

Répondre

1

Il semble que vous ayez commencé votre transaction sans l'avoir validée. alors essayez de le commettre.

Transaction transaction = session.beginTransaction();

transaction.Commit()

+0

Merci, @ EvgenyTanhilevich et @Tejal: D – abhi314