2016-09-08 1 views
0

Je résous un bogue dans notre application d'entreprise. L'application peut être connectée à Oracle, sqlServer et mysql. quand je me connecte à Oracle, je supprime toutes les données de certaines tables dans Oracle, je peux toujours interroger les données des tables Throse dans Oracle. Tout d'abord, je pensais que c'est à cause du cache Hibernate, mais quand je me connecte à sqlserver ou mysql faire la même chose, j'ai trouvé les données ont été supprimées.J'ai eu affaire avec le problème pour toute la journée.il est vraiment difficile pour moi et je dois résoudre le problème dans les deux prochains jours, si quelqu'un peut m'aider, je le ferai Merci beaucoup!cache oracle et hibernate

Voici quelques images et codes: ce sont les codes que j'utilise pour interroger les données de la base de données.

long num = dataService.getAllSum(bean.getDbName(), bean.getTableName()); 
bean.setIsTableExist(true); 
bean.setHasData(num > 0 ? true : false); 

ici est sourcecode de la fonction "getAllSum":

@Override 
public Long getAllSum(String dbName, String tableName) { 
    return (long) this.getJdbcTemplate(dbName).queryForInt("select count(ID) from " + tableName); 
} 

quand je suis en utilisant SQLServer, je supprime toutes les données de la table "NQ_AbbrNMChange", quand je debuged ici, le num est 0, c'est exact. Mais quand j'ai utilisé Oracle, faire la même chose, le résultat est faux, le num n'est pas 0, il semble que les données n'ont pas été supprimées, mais j'ai trouvé qu'il était vraiment supprimé dans l'oracle.

+0

vous vous connectez à la mauvaise instance de base de données peut-être? – sstan

+2

Dans les transactions oracle doivent être commis manuellement. Avez-vous vérifié que vous avez validé la transction dans laquelle vous avez effectué la suppression? – steelshark

+0

Afficher votre code de suppression. [Comment créer un exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) –

Répondre

0

J'ai résolu le problème, C'est parce que je n'ai pas commis. J'ai toujours effacé les données d'oracle dans le développeur de cmd non sql. Mais effectivement, les données ont juste été supprimées au niveau de vue, elles peuvent être vraiment supprimées jusqu'à ce que vous commited.As pour sqlserver, j'ai supprimé les données dans le studio de gestion sqlserver qui peut excuter autocommit.All, merci à tous!

+0

c'est exactement ce que j'ai dit dans mon premier commentaire ... "Dans les transactions oracle doivent être commis manuellement. Avez-vous vérifié que vous avez engagé la transction dans laquelle vous avez fait la suppression?" – steelshark