Java 嵌套EJB不回滚

Java 嵌套EJB不回滚,java,ejb,jta,transactional,Java,Ejb,Jta,Transactional,简单应用程序服务引发异常: @Stateless public class AppService { @Inject private Repository repo; @Inject private AppService2 service2; public void createFoo(String name) { Foo foo = new Foo(repo.nextIdentity(), name); repo.sa

简单应用程序服务引发异常:

@Stateless
public class AppService {

    @Inject
    private Repository repo;
    @Inject
    private AppService2 service2;

    public void createFoo(String name) {
        Foo foo = new Foo(repo.nextIdentity(), name);
        repo.save(foo);
    //    service2.createBar(name);
        throw new RuntimeException("asdf");
    }
}
Repository
也是
@无状态的
AppService2
类似于
AppService

当我抛出上述异常时,
foo
被回滚-一切正常。但是,当我调用另一个服务(注释)时,
bar
不会持久化到DB中,而是持久化
foo

为什么调用另一个服务后不回滚
foo

编辑

我发现AppService2在保存
bar

public void createBar(String name) {
    if (repo.find(name) != null)
        ...
    Bar bar = new Bar(repo.nextIdentity(), name);
    repo.save(bar);
}
此查询正在中断事务。当我在这个方法上设置@TransactionAttribute时

@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public Bar find(String name) {}
它解决了这个问题

你能解释一下它是怎么工作的吗

这条路对吗?还有别的路吗