我需要使用spring数据jpa实现唯一的约束验证,我知道可以使用jpa批注来完成,但我需要手动进行。
我有一个这样的课程(实体)用户:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String email;
private Date createdAt;
}
当我创建一个新用户时,我必须确认不存在其他使用相同用户名或密码的用户。 我知道我需要这样做(或多或少):
public interface UserRepository extends JpaRepository<User, Long> {
public List<User> findByUsernameOrEmail(String username, String email);
}
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public User create(User user) {
List<User> users = this.userRepository.findByUsernameOrEmail(user.getUsername(), user.getEmail());
if (users.size() > 0)
throw new RuntimeException("No repeated username or email allowed");
User newUser = this.userRepository.save(user);
return newUser;
}
}
我的问题是:我应该使用哪种类型的事务隔离级别? REPETEABLE_READ是否足够?我需要避免重复的用户