-1

休止状態に問題があります。問題はデータベースに保存するときですが、この最後の挿入を見つけようとすると、他のデータを見つけたり消去したりするなど、データベースで何らかのアクションを行うまで見つかりません。

これが私が保存する方法です:

    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();
        }
    }

そして、これは私が挿入後にデータベースで見つけようとする方法です:

 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;
}

私は多くのことを試しましたが、saveOrUpdateを変更してマージするか、単に保存するなど、何も違いはありませんでしたが、このことを変更しても違いはありませんでした。助けてくれる人に感謝します。

4

2 に答える 2

0

refreshingデータをデータベースhttp://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/Session.html#refresh(java.lang.Object)に保存する前に、セッションの状態を試してください。これは、セッション オブジェクトが以前に取得したデータを保存しないという独自の結果をもたらすため、通常はお勧めできません。スタックトレースは、適切なソリューションを提供するのに役立ちます。

于 2013-05-27T11:47:19.147 に答える
0

確かではありませんが、Hibernate は結果の反復を開始するまでクエリを実行しません (あなたの場合は userList)。

セッションを閉じる前に userList を反復してみてください。

ここで例を参照してください: Hibernate Query Language、HQL Select Query の使用

于 2013-05-27T11:33:38.197 に答える