在Hibernate中设置FlushMode的正确方法是什么?

4

帮助设置Hibernate的flush属性。

我遇到了以下错误。

在只读模式下不允许写操作(FlushMode.MANUAL):将您的会话转换为FlushMode.COMMIT/AUTO或从事务定义中删除“readOnly”标记。

我只是不确定如何设置flush属性。

<property name="org.hibernate.FlushMode" value="COMMIT"/> 

   <property name="org.hibernate.flushMode" value="COMMIT"/>  

   <property name="org.hibernate.flushMode" value="commit"/>   

   <property name="hibernate.flushMode" value="COMMIT"/>

如何在不使用任何Java代码的情况下设置属性?

我尝试了这种方法,但仍然显示相同的错误。

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?createDatabaseIfNotExist=true</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">update</property> 
        <property name="org.hibernate.flushMode" >commit</property> 
        <mapping class="com.example.User" />
    </session-factory>
</hibernate-configuration>

您正在只读事务中执行一些更新操作 - 可能是意外的 - 这就是问题所在。 - Zeromus
1个回答

3

正确的写法是:<property name="org.hibernate.flushMode" value="COMMIT"/>

但是,你遇到的问题不是flushMode的值不正确所导致的。这个错误信息来自于你的异常。它并不是直接和flushMode有关联的。你可能进行了一些操作,导致了这个异常的抛出。例如:你可能尝试在只读事务中执行某些更新查询操作。检查抛出此异常的dao/service方法是否正确配置了事务,并确认你要在其中执行的操作是否正确。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接