【问题标题】:hibernate not calling setReadOnly(true) on connection休眠未在连接时调用 setReadOnly(true)
【发布时间】:2011-04-07 19:51:19
【问题描述】:

我正在尝试设置我的 spring/hibernate 项目以使用主/从数据库设置。

事务似乎在春季工作(例如,当我尝试在注释为 @Transactional(readOnly=true) 的方法中使用 hibernateTemplate.merge() 时出现异常)。但是hibernate不会在注解的方法中使用从数据库。

@Transactional(readOnly=true)。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.ReplicationDriver"/>
    <property name="url" value="jdbc:mysql:replication://master:3306,slave:3306/proust"/>
    <property name="username" value="username"/>
    <property name="password" value="password"/>
</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<tx:annotation-driven transaction-manager="transactionManager"/>

然后我在 manager 类或 DAO 类中注释:

@Transactional(readOnly = true)

... 和一些带有

的方法
@Transactional(readOnly = false)

我希望类中的一些方法针对主服务器执行,一些针对从服务器执行,但它们都针对主服务器执行。我可能做错了什么?

【问题讨论】:

  • 嗨,这个问题你解决了吗?

标签: hibernate spring transactions master-slave


【解决方案1】:

对于@Transactional 注解,Hibernate 不会将 JDBC 连接切换到 R/O 模式,它只会阻止刷新更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-31
    • 2018-07-12
    • 1970-01-01
    • 2012-05-28
    • 2012-01-06
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多