0

私はJavaが初めてで、休止状態を使用しています。

コードのデータポイント インスタンスに追加しました。

Datapoint dp = new Datapoint();
dp.setDataset(dataset);
dp.setStation(station);

データセット ID で dp をカウントする必要がある dataset.getDatapointCount() 関数を実行します。

public int getDatapointCount()
    {

        Criteria        crit = Database.getSession().createCriteria(Datapoint.class);

        crit = crit.add(Restrictions.eq("dataset", this));
        crit.setProjection(Projections.rowCount());

        Integer         result = (Integer)crit.uniqueResult();

        return result.intValue();
    }

そして、私は0個のデータポイントを取得しました。(実行が終了すると、データベースに新しいデータポイントが表示されます)。

追加した

 Database.getSession().flush(); 

getDatapointCount() 関数の前に、実際に新しい数値 (たとえば 1000) を返します。

しかし、実行の最後に、データポイントはデータベースに保存されませんでした!

さらに、filush() の後に getDatapointCount() を 2 回記述すると、最初に取得できます。

2 回目は正解 (1000)、2 回目は正解なし (0)

誰かが私を助けることができますか?

前もって感謝します。

4

1 に答える 1

0

どのような価値FlushModeを使用していますか?

コミットされていないトランザクションは、データがDBに保存されない理由である可能性があります。

HibernateFlushModeドキュメントを参照してください

于 2012-06-29T07:57:48.777 に答える