Why org.hibernate.TransactionException in sleep mode and avoid

I am new to Hibernate.

I tried to code a small program to insert data into the mysql database server.

This is the source code of my program:

private int insertRelateNew(int newId, List<DocSimilar> 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;
}

On startup, it inserts successfully, but sometimes it throws a TransactionException.

This is the Exception console:

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)

I was looking for a problem, someone advised to catch Exception and rollback ().

But this method may lose the record that I want to insert into the database.

I want to find why an exception occurs to avoid it.

I searched for an Exception in the Hibernate Java Doc: http://www.dil.univ-mrs.fr/~massat/docs/hibernate-3.1/api/org/hibernate/TransactionException.html

He said: "Indicates that a transaction cannot be started, completed, or rolled back."

Does not explain why the exception occurs.

, , .

.

+5
2

: , :

Transaction tx = session.beginTransaction();
...
for (DocSimilar doc : relateNews) {
    ...
    tx.commit();
}

, for, , for.

+4

, , , .

, "tx.rollback()", "org.hibernate.TransactionException: ".

, , ...

if (tx!=null && tx.isActive()) {
 tx.rollback();
}

, , , , ...

, , .

+2

All Articles