2017-03-17 48 views
0

我有一个设置,我使用OpenEntityManagerInViewFilter来启用从我的数据库非事务性读取。为了将这些读取发送到主/从设置中的从设备,我设置了连接池以默认将连接设置为只读。我现在的问题是,即使用@Transactional注释的方法是可读写的,连接也没有设置为读写,并且事务被发送到只读服务器。这是春季的预期行为和/或我该如何解决这个问题?春季交易没有设置连接只读假

+0

我们使用一个特殊的标注在数据源之间切换:这种情况下的master/slave和事务性注释中的只读属性,尽管对于slave数据源我们可能会这么说,但我们并没有对pool进行默认设置 – borowis

+0

您是如何设置的连接池为“只读”,使用什么txn隔离? – sura2k

+0

@ sura2k HikariCP有一个HikariDataSource.setReadOnly,我使​​用innodb(可重复读取)的默认隔离级别。 –

回答

0

面对相同的问题,虽然我已经在CP30池默认设置只读标志为真。您可以通过ConnectionCustomizer界面来完成此操作。

我猜春假定默认的只读值是false,因此没有改变它。请参阅DataSourceUtils.prepareConnectionForTransaction

不知道这是否应该引发为错误。