什么是在hibernate中设置flushmode的正确方法

时间:2017-07-12 12:31:12

标签: java spring hibernate

帮助设置hibernate的flush属性。

我收到以下错误。

Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

我很困惑如何设置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>

1 个答案:

答案 0 :(得分:1)

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

但是你的问题是flushMode的值不正确。此消息来自您的例外。它没有直接连接到flushMode。您执行一些可能会引发此异常的操作。例如:您可以尝试使用只读事务执行某些更新查询。对于您尝试在其中进行的操作,请检查抛出此异常的dao / service方法以获取正确的事务配置。