该类设置为ReadOnlyTransactional,但方法为readOnly = false,默认传播为

时间:2018-03-22 16:37:08

标签: java spring hibernate spring-transactions

致电课程:

class ABC {
    @Autowired
    private Test test;
}

服务类。

@Service
@Transactional(readOnly=true)
class Test {

    @Transactional(readOnly=false)
    public boolean save() {
       //do work
    }
}

来自weblayer类ABC我通过REST API调用test.save()。

  1. 这里在REST层中进行调用时没有现有的事务,理想情况下,当save()启动时,它应该启动readOnly = FALSE事务,但显然它正在采用readOnly = TRUE的类级事务定义,这是对的吗 ?什么是正确的行为?如何解决?

  2. 如果我将传播作为REQUIRES_NEW进行save(),它会解决我的问题吗?

  3. 低于例外:

    Caused by: java.lang.UnsupportedOperationException: Can't write to a readonly object
        at org.hibernate.cache.ehcache.internal.strategy.ReadOnlyEhcacheEntityRegionAccessStrategy.update(ReadOnlyEhcacheEntityRegionAccessStrategy.java:115)
        at <...etc...>
    

0 个答案:

没有答案