1.目前只支持手动控制嵌套事务 2.事务控制由上下文BaseContextHandler中的mata控制 (1) //获取meta Meta meta = BaseContextHandler.getMeta(); (2) //新建一个事务点,oracle事务点名称规则有限制可以使用String point1 = "SP"+IdGenerator.nextId(); String point1 = UUID.randomUUID().toString(); (3) //子事务的回滚或者提交,如不主动提交则跟随后续meta.commit一起提交 try { meta.setSavepoint(point1); validates(v); //执行成功,直接commit(会提交整个point及之前的代码事务) meta.commit(); }catch (Exception e){ //失败,可以回滚当前事务点的代码 meta.rollback(point1); } (4)可运行demo: public RecordSet create(List<Map<String, Object>> valuesList) throws SQLException { //获取meta Meta meta = BaseContextHandler.getMeta(); List<Map<String, Object>> v = new ArrayList<>(); Map<String,Object> m = valuesList.get(0); m.remove("upload_field_images"); v.add(m); RecordSet rs = (RecordSet) this.getMeta().get("TestUser").callSuper(TestUser.class,"create",v); //新建一个事务点,oracle事务点名称规则有限制可以使用String point1 = "SP"+IdGenerator.nextId(); String point1 = UUID.randomUUID().toString(); try { meta.setSavepoint(point1); validates(v); //执行成功,直接commit(会提交整个point及之前的代码事务) meta.commit(); }catch (Exception e){ //失败,可以回滚当前事务点的代码,不影响其他代码事务执行 meta.rollback(point1); } //commit事务后,后续操作会开启新事务 meta.commit(); if(StringUtils.isBlank((String) valuesList.get(0).get("phone"))){ throw new RuntimeException("手机号码不能为空。。。。"); } rs = (RecordSet) this.getMeta().get("TestUser").callSuper(TestUser.class,"create",v); return rs; } public void validates(List<Map<String, Object>> valuesList){ if(StringUtils.isBlank((String) valuesList.get(0).get("phone"))){ throw new RuntimeException("手机号码不能为空。。。。"); } this.getMeta().get("TestUser").callSuper(TestUser.class,"create",valuesList); }