我有一个Web服务,它使用hibernate
在mysql数据库中进行数据持久化,这是第一次,客户端应用程序尝试插入 10个数据,但是它起作用了,但是当他尝试插入 20 数据,我只插入了 19个数据,在最终数据中,我遇到了这个错误:
org.apache.cxf.interceptor.Fault: Transaction not successfully started
Caused by: org.hibernate.TransactionException: Transaction not successfully started
这是我的代码,还有hibernate.cfg.xml
:
public Boolean updateMigration(MigrationBean migration) {
Boolean finished = false;
try {
sessionfactory = HibernateMySqlUtil.getSessionFactory();
session = sessionfactory.openSession();
session.beginTransaction();
session.createSQLQuery(Q0004).setString("userId", migration.getUserId())
.setString("userGroup", migration.getUserGroup()).setString("coId", migration.getCoId())
.setString("rpcodeInit", migration.getRpcodeInit())
.setString("rpcodeTarget", migration.getRpcodeTarget()).setString("dueDate", migration.getDueDate())
.setString("dateStart", migration.getDateStart()).setString("dateEnd", migration.getDateEnd())
.setString("comment", migration.getMigComment()).setString("custcode", migration.getCustCode())
.setString("csid", migration.getCsId()).setString("cocode", migration.getCoCode())
.setString("desInit", migration.getDesInit()).setString("desTarget", migration.getDesTarget())
.setString("remarque", migration.getRemarque()).setString("task", migration.getTask())
.setInteger("status", migration.getStatus()).setBigInteger("orderId", migration.getOrderId())
.executeUpdate();
finished = true;
logger.debug("Mise à jour avec succès");
if (!session.getTransaction().wasCommitted())
{
session.getTransaction().commit();}
} catch (HibernateException e) {
session.getTransaction().rollback();
throw new HibernateException("Erreur Execute Query: " + e.getMessage());
} finally {
if(session.isOpen())
session.close();
}
return finished;
}
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://xx.xx.xx.xx:xx/xxx</property>
<property name="hibernate.connection.username">xxx</property>
<property name="hibernate.connection.password">xxx</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="show_sql">true</property>
</session-factory>