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);
	}