java - hibernate 没有在 spring mvc 中更新

标签 java spring hibernate spring-mvc

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

   @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>

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

最佳答案

所有插入/更新功能必须在事务内

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

    //update/insert operations here

    session.update(auditorium);

    tx.commit();

    session.close();

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

关于java - hibernate 没有在 spring mvc 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25950065/

相关文章:

java - 如何连接到 BeanFactoryPostProcessor 中的数据库?

oracle - 有没有办法使用 Hibernate Criteria API 对结果进行排名?

java - 对带有删除标志的数据使用 HQL 的正确方法是什么

java - Hibernate 中的动态预加载和延迟加载

java - spring,如何更改 cglib 命名策略

java - 使用 Java 比较指纹

Spring + GraphQL - 可选授权

java - 我怎样才能像专业人士一样更新行?

Java - 附加到循环中的文件或打印整个字符串

java - 每次都会调用 ContextRefreshedEvent 而不是 ContextStartedEvent