0

我想让 jpa 的 crud 存储库执行的操作作为 xa 事务的一部分,即它们应该在提交 xa 资源时提交。

以下是 save 方法使用 xa 资源和 saveTeam 方法使用 crud 存储库方法即 save 的代码。我尝试过支持事务传播,not_supported 等参数,但没有奏效

public boolean save() throws Exception {
        OracleXADataSource oracleRootSource = new OracleXADataSource();
        oracleRootSource.setUser("root");
        oracleRootSource.setPassword("root");
        oracleRootSource.setURL("jdbc:oracle:thin:@localhost:1521:xe");
        XADataSource xaDS = oracleRootSource;
        XAConnection xaCon = xaDS.getXAConnection("root", "root");
        XAResource xaRes = xaCon.getXAResource();
        Connection con = xaCon.getConnection();
        Statement stmt = con.createStatement();
        Xid xid = new MyXid(100, new byte[] { 0x01 }, new byte[] { 0x02 });
        xaRes.start(xid, XAResource.TMJOIN);
//      stmt.executeUpdate("Insert into school values ( " + 202 + ", 'Second')"); 
        this.saveTeam(new Team("second"));
        xaRes.end(xid, XAResource.TMSUCCESS);
        return true;
    }

    @Transactional(propagation = Propagation.MANDATORY)
    public Team saveTeam(Team team) {
        Team te = repo.save(team);
        return te;
    }

我想在提交 xresource 时查看 saveTeam 方法所做的更改。当前在 save Team 方法中执行 save 方法时,更改在 db 中可见。

4

1 回答 1

0

spring.jpa.show-sql=true在 application.properties 文件中添加这一行

于 2019-09-16T12:39:42.670 回答