我们使用com.mysql.jdbc.ReplicationDriver连接主从机。我们按如下方式配置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,有一个开放的问题。有没有人有解决这个问题的办法?
发布于 2012-07-16 16:08:47
我的建议是围绕@Transactional注释编写方面,获取当前正在运行的会话,然后如果doWork(Work work)设置了connection.setReadOnly属性,则调用@transaction→并设置readonly。我还没有尝试过这个解决方案,但我认为它应该是有效的。
你也可以参考这个solution。
https://stackoverflow.com/questions/10833325
复制相似问题