【问题标题】:TransactionManager read-only=true does not work with mysql ReplicationDriverTransactionManager read-only=true 不适用于 mysql ReplicationDriver
【发布时间】:2012-05-31 12:09:39
【问题描述】:

我们使用 com.mysql.jdbc.ReplicationDriver 来连接 Master/Slave。我们配置 transactionManager 如下。

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<tx:advice id="txHbAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="get*" read-only="true" />
    </tx:attributes>
</tx:advice>

我将只读参数设置为 true,但它没有将 java.sql.Connection.setReadonly() 方法设置为 true。所有的读取查询仍然来自主服务器。

对于类似的问题 here 有一个未解决的问题。有没有人可以解决这个问题?

【问题讨论】:

  • 我有一个类似的问题......它似乎拒绝写入我的只读方法,但它不会引发异常,而是测试用例默默地通过。确实好像出了点问题。

标签: java mysql spring hibernate spring-transactions


【解决方案1】:

我的建议是围绕@Transactional 注释编写方面,获取当前正在运行的会话,然后调用doWork(Work work) → 如果@transaction 设置了只读属性,则设置connection.setReadOnly。我没有尝试过这个解决方案,但我认为它应该可以工作。

你也可以参考这个solution

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多