Зачем использовать org.hibernate.TransactionException в Hibernate и избегать

Я новичок в Hibernate.

Я попытался написать небольшую программу для вставки данных в сервер базы данных mysql.

Это исходный код моей программы:

private int insertRelateNew(int newId, List relateNews) {
    Session session = HibernateUtils.currentSession();
    Transaction tx = session.beginTransaction();
    RelatedArticles relatedArticles = null;
    try {
        relatedArticles = new RelatedArticles();
        for (DocSimilar doc : relateNews) {
            ApplicationPK appPK = new ApplicationPK(newId,
                    (int) doc.getDocid());
            relatedArticles.setApplicationPK(appPK);
            relatedArticles.setRelated_score(doc.getPercent());
            session.save(relatedArticles);
            tx.commit();
            session.flush();
        }
    } catch (Exception e) {
        e.printStackTrace();
        tx.rollback();
    }
    return newId;
}

При запуске она вставляется успешно, но иногда выдает исключение TransactionException

Это консоль исключения:

org.hibernate.TransactionException: Transaction not successfully started
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:131)
    at com.ant.crawler.dao.hibernate.SqlNewsPersistencer.insertRelateNew(SqlNewsPersistencer.java:56)
    at com.ant.crawler.dao.hibernate.SqlNewsPersistencer.insertNews(SqlNewsPersistencer.java:40)
    at com.ant.crawler.dao.hibernate.SqlPersistencer.store(SqlPersistencer.java:44)
    at com.ant.crawler.core.AbstractCrawler.crawl(AbstractCrawler.java:186)
    at com.ant.crawler.core.Worker.run(Worker.java:14)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

Я искал проблему, кто-то посоветовал поймать исключение и откатиться ().

Но таким образом можно потерять запись, которую я хочу вставить в БД.

Я хочу выяснить, почему происходит исключение, чтобы избежать его.

Я искал исключение в Hibernate Java Doc: http://www.dil.univ-mrs.fr/~massat/docs/hibernate-3.1/api/org/hibernate/TransactionException.html

Он сказал: «Указывает, что транзакция не может быть начата, зафиксирована или откат."

Это не объясняет, почему возникает Исключение.

Пожалуйста, объясните мне, почему возникает Исключение и как его избежать.

Большое спасибо.

-121---1870 628-

Можно ли смешивать режим CodeMirror: Velocity и смешанный режим CodeMirror: HTML?Кто-нибудь сделал режим 'htmlmixed' + 'Velocity' для codemirror? Или кто-нибудь может посоветовать, как этого добиться?

Кто-нибудь сделал режим 'htmlmixed' + 'Velocity' для codemirror? Или кто-нибудь может посоветовать, как этого добиться?

8
задан Benjamin 29 December 2013 в 13:18
поделиться