1

データベースからデータを取得するためのコードを作成しました。

ユーザーがリンクをクリックすると、以下のアクションが呼び出されます。それは私に初めて正しいデータを与えます。しかし、管理者がテーブルデータを更新した場合。次に、以下のコードは、テーブルから新しく更新されたデータを表示できません。ページを何度も更新すると、新しく更新されたデータが表示されます。しかし、次の更新後、古いデータが表示されます。

問題はdaoにあるか、Actionクラスにある可能性があります。この背後にある問題は何ですか?この問題を解決するのを手伝ってください。

BookdetailsDAO.java

    public   List findasc(int o,int l)
{
     List list = null;

        try {
             session = HibernateUtil.getSessionFactory().openSession(); 
             Query q1 = session.createQuery("FROM Bookdetails  ORDER BY authLastname ASC");
             q1.setFirstResult(o);
             q1.setMaxResults(l); 
            list =q1.list(); 
        } catch (Exception e) {
            System.out.println("Exception in  findasc()  :" + e);
        } finally {
            try {
                 session.flush();
                session.close();
            } catch (Exception e) {
                System.out.println("Exception In findasc Resource closing  :" + e);
            }
        } 
        return list; 
}
4

2 に答える 2

1

フラッシュの代わりに専用のコミットを追加してみてください。おそらく、セッションを閉じてもHibernateはすぐにはコミットしません。

また、1回のトランザクションですべてのデータを読み取ってみてください。コードによると、DAOへの呼び出しごとにセッションを開きます。一緒に属する呼び出しのためにセッションを再利用します。

インフラストラクチャにセッションの開始、終了、コミットを任せることを強くお勧めします。注釈駆動型アプローチの使用を検討してください。

于 2012-12-01T16:22:36.037 に答える
0

このコードを適用することで問題が解決しました

sessionFactory.close(); tx.commit();
session.close();

于 2012-12-05T16:10:29.270 に答える