我们使用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存在未解决的问题。有没有人有解决这个问题的方法?
答案 0 :(得分:-1)
我的建议是围绕@Transactional
注释编写方面,获取当前正在运行的会话,然后调用doWork(Work work)
→如果connection.setReadOnly
具有只读属性集,则设置@transaction
。我没有尝试过这个解决方案,但我认为它应该可行。
Youu也可以参考此solution。