0

我是 Java 新手并使用休眠。

我在我的代码数据点实例中添加了:

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

我运行 dataset.getDatapointCount() 函数,该函数必须使用数据集 id 计算 dp:

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() 两次,我就进入了第一个

一次正确答案(1000),第二次没有正确答案(0)

有人能帮我吗?

提前致谢。

4

1 回答 1

0

你用的是什么值FlushMode

未提交的事务可能是您的数据未保存到数据库的原因。

请参阅休眠刷新模式文档

于 2012-06-29T07:57:48.777 回答