org.hibernate.exception.ConstraintViolationException#org.springframework.dao.DuplicateKeyException源码实例Demo

下面列出了org.hibernate.exception.ConstraintViolationException#org.springframework.dao.DuplicateKeyException 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Override
public ServiceApiVersion add(AddServiceApiVersionRequestBody body) {
    String apiVersion = body.getApiVersion();
    String serviceId = body.getServiceId();
    String desc = body.getDesc();
    String userId = this.getUserId();

    //新增
    Date now = new Date();
    ServiceApiVersion serviceApiVersion = new ServiceApiVersion();
    serviceApiVersion.setId(SnowflakeIdWorker.getId());
    serviceApiVersion.setApiVersion(apiVersion);
    serviceApiVersion.setServiceId(serviceId);
    serviceApiVersion.setUserId(userId);
    serviceApiVersion.setDescription(desc);
    serviceApiVersion.setCreateTime(now);
    serviceApiVersion.setUpdateTime(now);
    try {
        this.serviceApiVersionMapper.insert(serviceApiVersion);
        return serviceApiVersion;
    } catch (DuplicateKeyException ex) {
        logger.warn("service version duplicate key " + ex.getMessage());
        return this.find(apiVersion, serviceId);
    }
}
 
@Override
public ProjectMember addCreator(String projectId) {
    String userId = this.getUserId();
    ProjectMember projectMember = new ProjectMember();
    projectMember.setId(SnowflakeIdWorker.getId());
    projectMember.setUserId(userId);
    projectMember.setCreator((byte) DBEnumInt.CREATOR_Y.getIndex());
    projectMember.setProjectId(projectId);
    projectMember.setCreateTime(new Date());
    try {
        this.projectMemberMapper.insert(projectMember);
        return projectMember;
    } catch (DuplicateKeyException ex) {
        logger.warn("project member duplicate key " + ex.getMessage());
        return this.find(userId, projectId);
    }
}
 
@Override
public ProjectMember add(String userId, String projectId) {
    ProjectMember projectMember = new ProjectMember();
    projectMember.setId(SnowflakeIdWorker.getId());
    projectMember.setUserId(userId);
    projectMember.setCreator((byte) DBEnumInt.CREATOR_N.getIndex());
    projectMember.setProjectId(projectId);
    projectMember.setCreateTime(new Date());
    try {
        this.projectMemberMapper.insert(projectMember);
        return projectMember;
    } catch (DuplicateKeyException ex) {
        logger.warn("project member duplicate key " + ex.getMessage());
        return this.find(userId, projectId);
    }
}
 
源代码4 项目: AthenaServing   文件: ServiceConditionImpl.java
@Override
public com.iflytek.ccr.polaris.cynosure.domain.Service add(AddServiceRequestBody body) {
    String name = body.getName();
    String desc = body.getDesc();
    String userId = this.getUserId();
    String clusterId = body.getClusterId();

    //新增
    Date now = new Date();
    com.iflytek.ccr.polaris.cynosure.domain.Service service = new com.iflytek.ccr.polaris.cynosure.domain.Service();
    service.setId(SnowflakeIdWorker.getId());
    service.setName(name);
    service.setDescription(desc);
    service.setUserId(userId);
    service.setGroupId(clusterId);
    service.setCreateTime(now);
    try {
        this.serviceMapper.insert(service);
        return service;
    } catch (DuplicateKeyException ex) {
        logger.warn("service duplicate key " + ex.getMessage());
        return this.find(name, clusterId);
    }
}
 
@Transactional
@CacheEvict(value = "collections", key = "#collectionId")
public Boolean addIllustrationToCollection(Integer userId, Integer collectionId, Illustration illustration) {
    //校验collectionId是否属于用户
    checkCollectionAuth(collectionId, userId);
    Collection collection = queryCollectionByIdFromDb(collectionId);
    //插入
    try {
        collectionMapper.incrCollectionIllustCount(collectionId);
        collectionMapper.addIllustrationToCollection(collectionId, illustration.getId());
        if (collection.getIllustCount() == 0) {
            collectionMapper.updateCollectionCover(collectionId, illustrationBizService.queryIllustrationById(illustration.getId()));
        }
    } catch (DuplicateKeyException e) {
        throw new BusinessException(HttpStatus.BAD_REQUEST, "画作在该画集中已经存在");
    }
    return true;
}
 
源代码6 项目: pmq   文件: UiTopicService.java
private void createSuccessTopic(TopicEntity topicEntity) {
	TopicEntity entity= topicService.getTopicByName(topicEntity.getName());
	if(entity!=null){
		throw new CheckFailException("topic:"+topicEntity.getName()+"重复,检查是否有重名topic已经存在。");
	}
	try {
		topicService.insert(topicEntity);
	} catch (DuplicateKeyException e) {
		throw new CheckFailException("topic:" + topicEntity.getName() + "重复,检查是否有重名topic已经存在。");
	}
	uiAuditLogService.recordAudit(TopicEntity.TABLE_NAME, topicEntity.getId(),
			"新建topic," + JsonUtil.toJson(topicEntity));
	// 计算分配的队列数
	int expectDayCount = topicEntity.getExpectDayCount() * 10000;
	int successQueueNum = expectDayCount / Constants.MSG_NUMS_OF_ONE_QUEUE;
	// 分配队列
	topicService.distributeQueueWithLock(topicEntity, successQueueNum,
			NodeTypeEnum.SUCCESS_NODE_TYPE.getTypeCode());
}
 
源代码7 项目: liteflow   文件: ExecutorPluginServiceImpl.java
@Override
public void add(ExecutorPlugin executorPlugin) {
    Preconditions.checkArgument(executorPlugin != null, "executorPlugin不能为空");
    Preconditions.checkArgument(StringUtils.isNotBlank(executorPlugin.getName()), "name不能为空");
    Preconditions.checkArgument(executorPlugin.getContainerId() != null, "containerId不能为空");


    ExecutorPlugin existModel = executorPluginMapper.getByName(executorPlugin.getName());
    if (existModel != null) {
        throw new ExecutorRuntimeException("该名称已经存在");
    }

    if (executorContainerService.getById(executorPlugin.getContainerId()) == null) {
        throw new ExecutorRuntimeException("该容器不存在");
    }

    executorPlugin.setStatus(StatusType.ON.getValue());
    try {
        executorPluginMapper.insert(executorPlugin);
    } catch (DuplicateKeyException e) {
        LOG.error("add executor container duplicate, name:{}", executorPlugin.getName());
        throw new ExecutorRuntimeException("该插件名称已经存在");
    }
}
 
源代码8 项目: liteflow   文件: ExecutorContainerServiceImpl.java
@Override
public void add(ExecutorContainer container) throws ExecutorRuntimeException{
    Preconditions.checkArgument(container != null, "model不能为空");
    Preconditions.checkArgument(StringUtils.isNotBlank(container.getName()), "name不能为空");

    ExecutorContainer existContainer = executorContainerMapper.getByName(container.getName());
    if (existContainer != null) {
        throw new ExecutorRuntimeException("该容器名称已经存在");
    }

    container.setStatus(StatusType.ON.getValue());
    try {
        executorContainerMapper.insert(container);
    } catch (DuplicateKeyException e) {
        LOG.error("add executor container duplicate, name:{}", container.getName());
        throw new ExecutorRuntimeException("已经存在同名的执行容器");
    }
}
 
源代码9 项目: cola   文件: JpaConnectionRepository.java
@Override
@Transactional(rollbackFor = Exception.class)
public void addConnection(Connection<?> connection) {
	try {
		ConnectionData data = connection.createData();
		UserConnection userConnection = new UserConnection();
		userConnection.setProviderUserName(data.getDisplayName());
		userConnection.setImageUrl(data.getImageUrl());
		userConnection.setAccessToken(encrypt(data.getAccessToken()));
		userConnection.setSecret(encrypt(data.getSecret()));
		userConnection.setRefreshToken(encrypt(data.getRefreshToken()));
		userConnection.setProviderId(data.getProviderId());
		userConnection.setProviderUserId(data.getProviderUserId());
		userConnection.setExpireTime(data.getExpireTime());
		userConnection.setUserId(userId);
		this.userConnectionRepository.save(userConnection);
	} catch (DuplicateKeyException e) {
		throw new DuplicateConnectionException(connection.getKey());
	}
}
 
源代码10 项目: AnyMock   文件: SpaceDaoImpl.java
@Override
public void create(SpaceBO spaceBO) {
    SpaceDO spaceDO = convertToDO(spaceBO);
    Date now = new Date();
    spaceDO.setId(null);
    spaceDO.setGmtCreate(now);
    spaceDO.setGmtModified(now);

    int resultSize;
    try {
        resultSize = spaceDOMapper.insert(spaceDO);
    } catch (DuplicateKeyException e) {
        throw new BizException(ResultCode.DUPLICATE_KEY_SPACE);
    }

    if (resultSize != 1) {
        throw new IncorrectResultSizeException(resultSize);
    }
}
 
源代码11 项目: AnyMock   文件: SpaceDaoImpl.java
@Override
public void update(SpaceBO spaceBO) {
    SpaceDO spaceDO = convertToDO(spaceBO);
    spaceDO.setGmtCreate(null);
    spaceDO.setGmtModified(new Date());

    int resultSize;
    try {
        resultSize = spaceDOMapper.updateByPrimaryKeySelective(spaceDO);
    } catch (DuplicateKeyException e) {
        throw new BizException(ResultCode.DUPLICATE_KEY_SPACE);
    }

    if (resultSize == 0) {
        throw new BizException(ResultCode.NOT_FOUND_SPACE);
    } else if (resultSize != 1) {
        throw new IncorrectResultSizeException(resultSize);
    }
}
 
源代码12 项目: AnyMock   文件: HttpInterfaceHeaderDaoImpl.java
@Override
public void batchCreate(List<HttpInterfaceHeaderBO> httpInterfaceHeaderBOListList, Long httpInterfaceId, HttpHeaderType type) {
    httpInterfaceHeaderBOListList.forEach(httpInterfaceHeaderBO -> {
        HttpInterfaceHeaderDO httpInterfaceHeaderDO = convertToDO(httpInterfaceHeaderBO, httpInterfaceId, type);

        int resultSize;
        try {
            resultSize = httpInterfaceHeaderDOMapper.insert(httpInterfaceHeaderDO);
        } catch (DuplicateKeyException e) {
            throw new BizException(ResultCode.DUPLICATE_KEY_HTTP_INTERFACE_HEADER);
        }

        if (resultSize != 1) {
            throw new IncorrectResultSizeException(resultSize);
        }
    });
}
 
源代码13 项目: qconfig   文件: ConfigServiceImpl.java
private void createOrUpdateConfig(final CandidateSnapshot snapshot) throws ModifiedException {
    final ConfigMeta configMeta = new ConfigMeta(snapshot.getGroup(), snapshot.getDataId(), snapshot.getProfile());
    final ConfigInfoWithoutPublicStatus currentConfig = configDao.findCurrentConfigInfo(configMeta);
    final long version = currentConfig == null ? 0 : currentConfig.getVersion();

    if (version != snapshot.getBasedVersion()) {
        throw new ModifiedException();
    } else if (version == 0) {
        try {
            configDao.create(VersionData.of(snapshot.getEditVersion(), configMeta));
        } catch (DuplicateKeyException e) {
            throw new ModifiedException();
        }
    } else {
        int update = configDao.update(VersionData.of(snapshot.getEditVersion(), configMeta),
                snapshot.getBasedVersion(),
                PublicStatus.INUSE);
        if (update == 0) {
            throw new ModifiedException();
        }
    }
}
 
源代码14 项目: joyqueue   文件: ThrowableSupplier.java
@Override
public Response error(final Throwable throwable) {
    logger.error("throwable exception",throwable);
    if (throwable instanceof IllegalArgumentException) {
        return Responses.error(ErrorCode.BadRequest.getCode(), ErrorCode.BadRequest.getStatus(), throwable.getMessage());
    } else if (throwable instanceof DuplicateKeyException) {
        return Responses.error(ErrorCode.DuplicateError.getCode(), ErrorCode.DuplicateError.getStatus(), "记录已经存在,请刷新重试");
    } else if (throwable instanceof DataIntegrityViolationException) {
        return Responses.error(ErrorCode.RuntimeError.getCode(), ErrorCode.RuntimeError.getStatus(), "输入记录不符合要求");
    } else if (throwable instanceof InvocationTargetException) {
        Throwable targetException = ((InvocationTargetException) throwable).getTargetException();
        if (targetException instanceof ServiceException) {
            ServiceException serviceException = (ServiceException) targetException;
            return Responses.error(ErrorCode.ServiceError.getCode(), serviceException.getStatus(), serviceException.getMessage());
        }
        return Responses.error(ErrorCode.RuntimeError.getCode(), ErrorCode.RuntimeError.getStatus(), targetException.getMessage());
    } else if(throwable instanceof NullPointerException) {
        return Responses.error(ErrorCode.RuntimeError.getCode(), ErrorCode.RuntimeError.getStatus(), ((NullPointerException) throwable).toString());
    }

    return Responses.error(ErrorCode.RuntimeError.getCode(), ErrorCode.RuntimeError.getStatus(),
            (StringUtils.isNotBlank(throwable.toString()) ? throwable.toString(): ErrorCode.RuntimeError.getMessage()));
}
 
源代码15 项目: qmq   文件: DbDicService.java
private String getOrCreateId(String name) {
    int id;
    try {
        id = dicStore.getId(name);
    } catch (EmptyResultDataAccessException e) {
        try {
            id = dicStore.insertName(name);
        } catch (DuplicateKeyException e2) {
            id = dicStore.getId(name);
        } catch (Exception e3) {
            LOG.error("insert name error: {}", name, e3);
            throw new RuntimeException("insert name error: " + name, e3);
        }
    }
    return String.format(pattern, id);
}
 
源代码16 项目: angular-spring-api   文件: UserController.java
@PostMapping()
@PreAuthorize("hasAnyRole('ADMIN')")
public ResponseEntity<Response<User>> create(HttpServletRequest request, @RequestBody User user,
		BindingResult result) {
	Response<User> response = new Response<User>();
	try {
		validateCreateUser(user, result);
		if (result.hasErrors()) {
			result.getAllErrors().forEach(error -> response.getErrors().add(error.getDefaultMessage()));
			return ResponseEntity.badRequest().body(response);
		}
		user.setPassword(passwordEncoder.encode(user.getPassword()));
		User userPersisted = (User) userService.createOrUpdate(user);
		response.setData(userPersisted);
	} catch (DuplicateKeyException dE) {
		response.getErrors().add("E-mail already registered !");
		return ResponseEntity.badRequest().body(response);
	} catch (Exception e) {
		response.getErrors().add(e.getMessage());
		return ResponseEntity.badRequest().body(response);
	}
	return ResponseEntity.ok(response);
}
 
源代码17 项目: server   文件: TestPlanService.java
@Transactional
public Response update(TestPlan testPlan) {
    if (testPlan.getEnableSchedule() == TestPlan.ENABLE_SCHEDULE && StringUtils.isEmpty(testPlan.getCronExpression())) {
        // 开启定时任务,表达式不能为空
        return Response.fail("cron表达式不能为空");
    }

    int updateRow;
    try {
        updateRow = testPlanMapper.updateByPrimaryKeyWithBLOBs(testPlan);
    } catch (DuplicateKeyException e) {
        return Response.fail("命名冲突");
    }

    if (testPlan.getEnableSchedule() == TestPlan.ENABLE_SCHEDULE) {
        addOrUpdateScheduleTask(testPlan);
    } else {
        cancelScheduleTask(testPlan.getId());
    }

    return updateRow == 1 ? Response.success("更新TestPlan成功") : Response.fail("更新TestPlan失败,请稍后重试");
}
 
源代码18 项目: flow-platform-x   文件: UserServiceImpl.java
@Override
public User create(String email, String passwordOnMd5, User.Role role) {
    try {
        Date now = Date.from(Instant.now());

        User user = new User(email, passwordOnMd5, role);
        user.setCreatedAt(now);
        user.setUpdatedAt(now);
        user.setCreatedBy(sessionManager.exist() ? sessionManager.getUserId() : DefaultCreator);
        return userDao.insert(user);
    } catch (DuplicateKeyException e) {
        throw new DuplicateException("Email {0} is already existed", email);
    }
}
 
@Override
public Product createProduct(Product body) {

    if (body.getProductId() < 1) throw new InvalidInputException("Invalid productId: " + body.getProductId());

    ProductEntity entity = mapper.apiToEntity(body);
    Mono<Product> newEntity = repository.save(entity)
        .log()
        .onErrorMap(
            DuplicateKeyException.class,
            ex -> new InvalidInputException("Duplicate key, Product Id: " + body.getProductId()))
        .map(e -> mapper.entityToApi(e));

    return newEntity.block();
}
 
@Override
public ServiceVersion add(AddServiceVersionRequestBody body) {
	String version = body.getVersion();
	String serviceId = body.getServiceId();
	String desc = body.getDesc();
	String userId = this.getUserId();

	// 新增
	Date now = new Date();
	ServiceVersion serviceVersion = new ServiceVersion();
	serviceVersion.setId(SnowflakeIdWorker.getId());
	serviceVersion.setVersion(version);
	serviceVersion.setServiceId(serviceId);
	serviceVersion.setUserId(userId);
	serviceVersion.setDescription(desc);
	serviceVersion.setCreateTime(now);
	serviceVersion.setUpdateTime(now);
	if (body instanceof CopyAddServiceVersionRequestBody) {
		Date updateTime = ((CopyAddServiceVersionRequestBody) body).getUpdateTime();
		serviceVersion.setUpdateTime(updateTime == null ? now : updateTime);
	}
	try {
		this.serviceVersionMapper.insert(serviceVersion);
		return serviceVersion;
	} catch (DuplicateKeyException ex) {
		logger.warn("service version duplicate key " + ex.getMessage());
		return this.find(version, serviceId);
	}
}
 
源代码21 项目: AthenaServing   文件: ServiceConfigConditionImpl.java
@Override
public int copyConfigs1(List<ServiceConfig> serviceConfigs, String versionId, Map<String, String> oldGrayId2NewGrayId, String path) {
    String userId = this.getUserId();
    for (ServiceConfig serviceConfig : serviceConfigs) {
        serviceConfig.setId(SnowflakeIdWorker.getId());
        serviceConfig.setUserId(userId);
        serviceConfig.setVersionId(versionId);
        String originalPath = serviceConfig.getPath();
        String[] split = originalPath.split("/");
        String fileName = split[split.length - 1];
        StringBuffer sb = new StringBuffer(path);
        StringBuffer append = sb.append(fileName);
        serviceConfig.setPath(append.toString());
        String grayId = serviceConfig.getGrayId();
        if (oldGrayId2NewGrayId.containsKey(grayId)){
            serviceConfig.setGrayId(oldGrayId2NewGrayId.get(grayId));
        }
        Date date = new Date();
        serviceConfig.setCreateTime(date);
        serviceConfig.setUpdateTime(date);
        try {
            this.serviceConfigMapper.insert(serviceConfig);
        } catch (DuplicateKeyException ex) {
            logger.warn("service config duplicate key " + ex.getMessage());

        }
    }
    return 0;
}
 
源代码22 项目: flow-platform-x   文件: SecretServiceImpl.java
private <T extends Secret> T save(T credential) {
    try {
        Date now = Date.from(Instant.now());
        credential.setUpdatedAt(now);
        credential.setCreatedAt(now);
        credential.setCreatedBy(sessionManager.getUserId());
        return secretDao.insert(credential);
    } catch (DuplicateKeyException e) {
        throw new DuplicateException("Credential name {0} is already defined", credential.getName());
    }
}
 
@Override
public Product createProduct(Product body) {

    if (body.getProductId() < 1) throw new InvalidInputException("Invalid productId: " + body.getProductId());

    ProductEntity entity = mapper.apiToEntity(body);
    Mono<Product> newEntity = repository.save(entity)
        .log()
        .onErrorMap(
            DuplicateKeyException.class,
            ex -> new InvalidInputException("Duplicate key, Product Id: " + body.getProductId()))
        .map(e -> mapper.entityToApi(e));

    return newEntity.block();
}
 
@Test
public void errorCodeTranslation() {
	SQLExceptionTranslator sext = new SQLErrorCodeSQLExceptionTranslator(ERROR_CODES);

	SQLException badSqlEx = new SQLException("", "", 1);
	BadSqlGrammarException bsgex = (BadSqlGrammarException) sext.translate("task", "SQL", badSqlEx);
	assertEquals("SQL", bsgex.getSql());
	assertEquals(badSqlEx, bsgex.getSQLException());

	SQLException invResEx = new SQLException("", "", 4);
	InvalidResultSetAccessException irsex = (InvalidResultSetAccessException) sext.translate("task", "SQL", invResEx);
	assertEquals("SQL", irsex.getSql());
	assertEquals(invResEx, irsex.getSQLException());

	checkTranslation(sext, 5, DataAccessResourceFailureException.class);
	checkTranslation(sext, 6, DataIntegrityViolationException.class);
	checkTranslation(sext, 7, CannotAcquireLockException.class);
	checkTranslation(sext, 8, DeadlockLoserDataAccessException.class);
	checkTranslation(sext, 9, CannotSerializeTransactionException.class);
	checkTranslation(sext, 10, DuplicateKeyException.class);

	SQLException dupKeyEx = new SQLException("", "", 10);
	DataAccessException dksex = sext.translate("task", "SQL", dupKeyEx);
	assertTrue("Not instance of DataIntegrityViolationException",
			DataIntegrityViolationException.class.isAssignableFrom(dksex.getClass()));

	// Test fallback. We assume that no database will ever return this error code,
	// but 07xxx will be bad grammar picked up by the fallback SQLState translator
	SQLException sex = new SQLException("", "07xxx", 666666666);
	BadSqlGrammarException bsgex2 = (BadSqlGrammarException) sext.translate("task", "SQL2", sex);
	assertEquals("SQL2", bsgex2.getSql());
	assertEquals(sex, bsgex2.getSQLException());
}
 
/**
 * 处理重复插入异常
 *
 * @param req
 * @param e
 * @return
 * @throws Exception
 */
@ExceptionHandler(value = DuplicateKeyException.class)
@ResponseBody
public AjaxResult jsonDuplicateKeyErrorHandler(HttpServletRequest req, Exception e) throws Exception {
    AjaxResult ajaxResult = new AjaxResult();
    e.printStackTrace();
    ajaxResult.addError("业务受理失败:" + "数据已添加,请勿重复提交!");
    return ajaxResult;
}
 
@Override
public Product createProduct(Product body) {

    if (body.getProductId() < 1) throw new InvalidInputException("Invalid productId: " + body.getProductId());

    ProductEntity entity = mapper.apiToEntity(body);
    Mono<Product> newEntity = repository.save(entity)
        .log()
        .onErrorMap(
            DuplicateKeyException.class,
            ex -> new InvalidInputException("Duplicate key, Product Id: " + body.getProductId()))
        .map(e -> mapper.entityToApi(e));

    return newEntity.block();
}
 
源代码27 项目: liteflow   文件: ExecutorServerServiceImpl.java
@Override
public void add(ExecutorServer executor) throws ExecutorRuntimeException {
    Preconditions.checkArgument(executor != null, "executor不能为空");
    Preconditions.checkArgument(StringUtils.isNotBlank(executor.getName()), "name不能为空");
    Preconditions.checkArgument(StringUtils.isNotBlank(executor.getIp()), "ip不能为空");

    executor.setStatus(StatusType.ON.getValue());
    try {
        executorServerMapper.insert(executor);
    } catch (DuplicateKeyException e) {
        LOG.error("add executor duplicate, ip:{}, name:{}", executor.getIp(), executor.getName());
        throw new ExecutorRuntimeException("已经存在相同ip or name的执行者");
    }
}
 
源代码28 项目: liteflow   文件: ExecutorServerServiceImpl.java
@Override
public int update(ExecutorServer executor) throws ExecutorRuntimeException {
    Preconditions.checkArgument(executor != null, "executor不能为空");
    Preconditions.checkArgument(executor.getId() != null, "id不能为空");

    try {
       return executorServerMapper.update(executor);
    } catch (DuplicateKeyException e) {
        LOG.error("update executor duplicate, id:{}, ip:{}, name:{}", executor.getId(), executor.getIp(), executor.getName());
        throw new ExecutorRuntimeException("已经存在相同ip or name的执行者");
    }
}
 
@Lock
@Transactional(rollbackFor = DSSErrorException.class)
@Override
public void addFlowTaxonomy(DWSFlowTaxonomy dwsFlowTaxonomy,Long projectVersionID) throws DSSErrorException {
    try {
        flowTaxonomyMapper.insertFlowTaxonomy(dwsFlowTaxonomy);
    }catch (DuplicateKeyException e){
        logger.info(e.getMessage());
        throw new DSSErrorException(90005,"工作流名分类名不能重复");
    }
}
 
@Lock
@Transactional(rollbackFor = DSSErrorException.class)
@Override
public void updateFlowTaxonomy(DWSFlowTaxonomy dwsFlowTaxonomy,Long projectVersionID) throws DSSErrorException {
    try {
        flowTaxonomyMapper.updateFlowTaxonomy(dwsFlowTaxonomy);
    }catch (DuplicateKeyException e){
        logger.info(e.getMessage());
        throw new DSSErrorException(90005,"工作流名分类名不能重复");
    }
}