2013-05-27 3 views
-1

J'ai un problème avec hibernate, le problème est quand je sauvegarde dans la base de données mais quand j'essaye de trouver cette dernière insertion il ne trouve pas jusqu'à ce que j'ai fait une action dans la base de données, comme je trouver ou effacer d'autres données.problèmes avec hibernate sauver dans la base de données

Voilà comment je sauve:

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); 
    session = sessionFactory.openSession(); 
    Transaction tx = null; 
    try { 
     tx = session.beginTransaction(); 
     session.saveOrUpdate(o); 
     session.saveOrUpdate(o1); // o and o1 are two differents objects 
     tx.commit(); 

    } catch (Exception e) { 
     if (tx != null) { 
      tx.rollback(); 
     } 
    } 

Et voilà comment j'essaie de trouver dans la base de données après une insertion:

public List getUserNames(int startID, int endID) { 
    List<User> userList = null; 
    try { 
     org.hibernate.Transaction tx = session.beginTransaction(); 
     Query q = session.createQuery("select u from User u "); 
     userList = (List<User>) q.list(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return userList; 
} 

J'ai essayé beaucoup de choses, mais rien faire la différence, comme changez saveOrUpdate pour fusionner ou simplement sauvegarder, mais cela n'a fait aucune différence. merci à tous ceux qui peuvent aider.

+1

essayez d'imprimer l'exception dans votre fonction de sauvegarde pour voir si la sauvegarde donne des erreurs –

+0

Vous partagez la 'session' entre les deux méthodes? Est-ce un membre de la classe qui héberge les deux méthodes (ce qui serait mauvais)? Est-ce pour un seul fil ou plus? –

+0

mon sauvegarde n'a pas d'erreur, mon insertion fonctionne, quand je vais au terminal de base de données pour montrer cette dernière insertion, il apparaît normalement, mais quand j'essaie de le trouver, il ne trouve pas – sams15

Répondre

0

Vous ne savez pas, mais Hibernate n'exécute pas la requête tant que vous n'avez pas démarré le résultat (Dans votre cas userList). Essayez d'itérer userList avant la fermeture de la session.

Voir un exemple ici: Hibernate Query Language, Using HQL Select Query

+0

J'ai essayé de le faire maintenant, mais n'a pas fonctionné, après que je l'ai fait, ma page de connexion ne fonctionne plus – sams15

0

Essayez refreshing l'état de la session avant d'enregistrer les données à la base de données http://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/Session.html#refresh(java.lang.Object). Ceci n'est généralement pas recommandé car il a ses propres conséquences de ne pas enregistrer les données que l'objet de session a précédemment acquises. Votre stacktrace sera utile pour fournir une solution adaptée.

+0

J'ai essayé aussi et comme tu l'as dit, je ne peux plus insérer – sams15

Questions connexes