我是冬眠新手。
我曾尝试编写一个小程序来插入数据到mysql数据库服务器。
这是我的程序的源代码:
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;
}运行时,它会成功插入,但有时会抛出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
它说:“表示事务无法开始、提交或回滚。”
它不能解释为什么会发生异常。
请为我解释为什么会发生异常,以及如何避免它。
非常感谢。
发布于 2014-02-13 06:52:53
我有和你一样的错误信息,我发现即使是回滚也会给你带来问题。
在我的例子中,当我调用"tx.rollback()“时,它抛出了错误"org.hibernate.TransactionException: Transaction not successfully”。
所以当我意识到这一点时,我添加了以下内容...
if (tx!=null && tx.isActive()) {
tx.rollback();
}然后它向我揭示了另一个例外,现在好多了,因为我现在可以看到真正的问题在哪里,这是我在插入中没有满足的一些标准……
希望这能帮上忙,干杯。
https://stackoverflow.com/questions/10909827
复制相似问题