休眠:事务未成功启动

时间:2019-01-05 19:31:02

标签: java hibernate

我有一个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>

0 个答案:

没有答案