Попытка использовать цикл for для сохранения / фиксации данных с использованием hibernate 4.3.11. Окончание с SQLite Dialect com.enigmabridge:hibernate4-sqlite-dialect
Когда я запускаю этот код и проверяю данные Sqlite, я вижу, что в нем сохранен только 1 элемент (кажется, что он фиксируется только один раз) и что один элемент является последним (из 5 сгенерированных элементов), которые я вижу в базе данных.
configureSessionFactory();
Session session = null;
Transaction tx=null;
try {
session = sessionFactory.openSession();
SyndEntry entry = null;
URL feedUrl = new URL(rssUrl);
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(feedUrl));
tx = session.beginTransaction();
BroadcastItem item = new BroadcastItem();
for (int i = 0 ; i < 5 ; i++) {
entry = (SyndEntry) feed.getEntries().get(i);
item.setMessage(entry.getTitle());
item.setLinkUrl(entry.getLink());
session.save(item);
}
tx.commit();
} catch (Exception ex) {
ex.printStackTrace();
// Rolling back the changes to make the data consistent in case of any failure in between multiple database write operations.
tx.rollback();
} finally{
if(session != null) {
session.close();
}
}
Но когда я перемещаю tx = session.beginTransaction();
внутри цикла for, я получаю
вложенные транзакции не поддерживаются
- Как мне выполнить то, что я хочу (цикл 5 раз, добавляя элемент данных каждый раз в базу данных)?
- Почему коммит запускается только один раз?