Spring数据 - 检查User" can"插入?

时间:2018-03-09 19:27:05

标签: sql-server spring-boot spring-data

在spring boot,spring data和ms sql中, 如果用户包含已包含在数据库中的唯一字段中的值,我该如何处理用户的插入?

如果可以插入用户,是否有类似检查的内容?

现在,我有以下代码:
用户存储库:

public interface UserRepository extends CrudRepository<User, Long> {
    public boolean existsByName(String name);
}

用户服务:

public void registerNewUser(RegisterUserDto toRegisterDto) throws UserAlreadyExistsException {
         //check ALL unique fields ?
        if(userRepository.existsByName(toRegisterDto.getName())) {
            throw new UserAlreadyExistsException();
        }
        User entity = convertToEntity(toRegisterDto);

        User saved = userRepository.save(entity);
    }

所以,我的问题:
1)如果用户可以插入,可以检查如何以最简单的方式遵循所有数据库约束 - 例如唯一值?

2)如果弹出数据在插入重复用户时抛出异常,如何正确处理?

1 个答案:

答案 0 :(得分:1)

如果您不想更新已存在的数据,则代码是最佳代码。这里是更简单的代码。
首先插入,然后DBMS引发ConstraintViolationException等。抓住异常并处理它。

try {
   User saved = userRepository.save(entity);
} catch (ConstraintViolationException e) { // detailed Exception is different by DBMS and JPA implemetation
    throw new UserAlreadyExistsException();
}