Создаются дубликаты Hibernate / Spring - PullRequest
0 голосов
/ 30 марта 2020

У меня есть следующие логи c:

public ViewedPost create(ViewedPostDto resource) {
        ViewedPost lookup = findByUserIdAndPostId(resource.getUserId(), resource.getPostId());
        if (lookup != null) {
            throw new ConflictException("Post with id " + resource.getPostId() + " is already viewed by user " + resource.getUserId() + ".");
        }

        Post post = postService.findOne(resource.getPostId());

        User user = userService.findOne(resource.getUserId());
        if (user == null) {
            throw new BadRequestException(
                    "Failed to view Post: userId " + resource.getUserId() + " does not belong to a User.");
        }

        logger.info("Take me out");

        if (post == null) {
            throw new BadRequestException(  
                    "Failed to view Post: postId " + resource.getPostId() + " does not belong to a Post.");
        } else {
            postService.incrementViewCount(post.getId(), 1);
        }

        ViewedPost vp = new ViewedPost();
        vp.setPost(post);
        vp.setUser(user);
        ViewedPost created = create(vp);

        return created;
    }

Этот метод часто вызывается за короткий промежуток времени, и часто возникают запросы на создание дублирующих запросов. Я часто вижу что-то подобное в своих журналах и заметил, что создаются дубликаты.

21:18:56.450 [http-nio-5000-exec-10] INFO  c.m.w.s.impl.ViewedPostServiceImpl - Post with id 400 is already viewed by user 342.
21:18:56.484 [http-nio-5000-exec-10] INFO  c.m.w.s.impl.ViewedPostServiceImpl - Post with id 402 is already viewed by user 342.
21:18:56.489 [http-nio-5000-exec-10] INFO  c.m.w.s.impl.ViewedPostServiceImpl - Post with id 399 is already viewed by user 342.
21:18:56.504 [http-nio-5000-exec-10] INFO  c.m.w.s.impl.ViewedPostServiceImpl - Post with id 401 is already viewed by user 342.
21:18:56.508 [http-nio-5000-exec-10] INFO  c.m.w.s.impl.ViewedPostServiceImpl - Post with id 398 is already viewed by user 342.
21:18:56.513 [http-nio-5000-exec-10] INFO  c.m.w.s.impl.ViewedPostServiceImpl - Post with id 390 is already viewed by user 342.
21:18:56.517 [http-nio-5000-exec-10] INFO  c.m.w.s.impl.ViewedPostServiceImpl - Post with id 389 is already viewed by user 342.
21:18:56.523 [http-nio-5000-exec-10] WARN  c.m.c.w.RestResponseEntityExceptionHandler - Conflict: query did not return a unique result: 4; nested exception is javax.persistence.NonUniqueResultException: query did not return a unique result: 4

Может кто-нибудь сказать мне, как я могу предотвратить создание этих дубликатов, даже если я проверяю начальный поиск. Кажется, что куча создается нормально, а затем сталкивается с дубликатом, пробирающимся через

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...