2012-06-29 4 views
0

Я новичок в Java и использую hibernate.java - hibernate save и read from DB

Я добавил в мой код: экземпляры точек данных

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

я запустить функцию dataset.getDatapointCount(), который должен подсчитывать дп с набором данных ID:

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 например)

, но в конце подножки с точками данных Didnt сохраняется в базе данных!

Кроме того, если я пишу getDatapointCount() после filush() дважды, я получил в первом

время правильный ответ (1000) и во второй раз не правильный ответ (0)

Может кто-нибудь мне помочь?

Заранее спасибо.

ответ

0

Какое значение FlushMode вы используете?

Невозможность совершения транзакции может быть причиной того, что ваши данные не сохранены в БД.

См. Hibernate FlushMode doc