2012-05-31 29 views
4

我們使用com.mysql.jdbc.ReplicationDriver來連接主/從。我們按如下配置transactionManager。TransactionManager只讀= true不適用於MySQL ReplicationDriver

<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

我有一個類似的問題...它似乎拒絕寫入我的只讀方法,但它不會拋出異常,而是測試用例默默地通過。這當然看起來有點不對勁。 – samspot

回答

-1

我的建議是寫方面圍繞@Transactional註釋,獲得當前運行的會話,然後調用doWork(Work work)→並設置connection.setReadOnly如果@transaction已只讀屬性設置。我沒有嘗試過這個解決方案,但我認爲它應該可以工作。

您也可以參考solution

相關問題