Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在spring mvc中hibernate不更新_Java_Spring_Hibernate_Spring Mvc - Fatal编程技术网

Java 在spring mvc中hibernate不更新

Java 在spring mvc中hibernate不更新,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我有一个问题,我的项目是基于与hibernate集成的spring mvc的。在此更新中,它不起作用。。 dao @Override public void updateAuditorium(Auditorium auditorium) { openSession().update(auditorium); } 服务 @Transactional public void update(Auditorium auditorium) {

我有一个问题,我的项目是基于与hibernate集成的spring mvc的。在此更新中,它不起作用。。 dao

   @Override
        public void updateAuditorium(Auditorium auditorium) {
        openSession().update(auditorium);
    }
服务

@Transactional
    public void update(Auditorium auditorium) {
    auditoriumDAO.updateAuditorium(auditorium);

    }
配置

<beans:bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <beans:property name="url" value="jdbc:mysql://localhost:3306/auditoriumbooking" />
        <beans:property name="username" value="root" />
        <beans:property name="password" value="root" />
    </beans:bean>

    <!-- Hibernate 4 SessionFactory Bean definition -->
    <beans:bean id="hibernate4AnnotatedSessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="dataSource" />
        <beans:property name="packagesToScan">
            <beans:list>
                <beans:value>com.company.product.model</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
            </beans:props>
        </beans:property>
    </beans:bean>

com.company.product.model
org.hibernate.dialogue.mysqldialogue
真的

执行函数后,注意到发生了什么。

所有插入/更新函数必须在一个事务中

    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();

    //update/insert operations here

    session.update(auditorium);

    tx.commit();

    session.close();
Transaction transaction = null;
Session session = null;
try {
    //create the session object with openSession() and then begin transaction on session         
    session = sessionFactory().openSession();
    transaction = session.beginTransaction();
    session.update(auditorium);
    transaction.commit();

} catch(HibernateException e) {
    transaction.rollback();
} finally {
    session.close();
}

如果您自己处理会话(
factory.openSession()
),则可以执行只读操作而无需事务。但是,如果您在hibernate配置文件中配置会话处理,则hibernate将为您打开和关闭会话,并且即使对于只读操作,也需要事务。在这种情况下,您必须编写
factory.getCurrentSession()
。事务是必需的,因为hibernate在检测到事务结束时会自动关闭会话。

由于您使用的是sessionFactory,因此必须使用
事务
进行数据库操作。 您必须创建会话,然后在会话中开始一个事务,执行db操作,然后通过提交事务将其保存到数据库中

    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();

    //update/insert operations here

    session.update(auditorium);

    tx.commit();

    session.close();
Transaction transaction = null;
Session session = null;
try {
    //create the session object with openSession() and then begin transaction on session         
    session = sessionFactory().openSession();
    transaction = session.beginTransaction();
    session.update(auditorium);
    transaction.commit();

} catch(HibernateException e) {
    transaction.rollback();
} finally {
    session.close();
}
编辑: 问题编辑后:

您正在使用
@Trasactional
注释。 因此,您必须创建一个
HibernateTransactionManager
bean(如果尚未创建)并使用


创建
HibernateTransactionManager
&define
in

application-context.xml


你能给我们提供一些控制台日志吗?你在这里放的东西弄不清楚。你是说tomcat日志?你需要提交事务。我使用sessionFactory。我如何提交事务。