Java 在事务中插入数据后,不更新Flowable
当我们在插入新的数据库行后使用FlowTable获取更新通知时,工作正常。Java 在事务中插入数据后,不更新Flowable,java,rx-java2,android-room,Java,Rx Java2,Android Room,当我们在插入新的数据库行后使用FlowTable获取更新通知时,工作正常。 但是,当插入在另一个显式事务中完成时,Flowable不会收到通知 为了说明这个问题,我从android架构组件中派生了BasicRxJavaSample,并添加了两种测试方法 我们可以看到,此代码使用一个事务,我的测试代码也使用另一个事务。 根据文档,嵌套事务应该可以 这可能是房间里的虫子吗 此项目的房间版本是1.0.0-alpha3,但我也可以看到版本1.0.0-alpha8(在另一个项目中)存在此问题。这是房间中的
但是,当插入在另一个显式事务中完成时,Flowable不会收到通知 为了说明这个问题,我从
android架构组件中派生了BasicRxJavaSample
,并添加了两种测试方法
我们可以看到,此代码使用一个事务,我的测试代码也使用另一个事务。
根据文档,嵌套事务应该可以
这可能是房间里的虫子吗
此项目的房间版本是1.0.0-alpha3
,但我也可以看到版本1.0.0-alpha8
(在另一个项目中)存在此问题。这是房间中的一个bug:
我验证了该错误已通过版本1.0.0-rc1
修复。这是房间中的一个错误:
我验证了该错误已通过版本1.0.0-rc1
修复,作为临时的黑客解决方法,我可以调用mDatabase.getInvalizationTracker().RefreshVersionSync()
在Google issue tracker上的事务阻塞问题之后:作为临时的黑客解决方法,我可以调用mDatabase.getInvalizationTracker().RefreshVersionSync()代码>在Google issue tracker上的交易阻止问题之后:
@Test
public void testFlowable() {
// When subscribing to the emissions of the user
final TestSubscriber<User> userTestSubscriber = mDatabase.userDao().getUser().test();
userTestSubscriber.assertValueCount(0);
// When inserting a new user in the data source
mDatabase.userDao().insertUser(USER);
userTestSubscriber.assertValueCount(1);
}
@Test
public void testFlowableInTransaction() {
// When subscribing to the emissions of the user
final TestSubscriber<User> userTestSubscriber = mDatabase.userDao().getUser().test();
userTestSubscriber.assertValueCount(0);
// When inserting a new user in the data source
mDatabase.beginTransaction();
try {
mDatabase.userDao().insertUser(USER);
mDatabase.setTransactionSuccessful();
} finally {
mDatabase.endTransaction();
}
userTestSubscriber.assertValueCount(1);
// this fails - the userTestSubscriber is still empty!
}
public void insertUser(User user) {
__db.beginTransaction();
try {
__insertionAdapterOfUser.insert(user);
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
}
}