Повторяющаяся запись для ключа во время оператора SELECT? - PullRequest
0 голосов
/ 26 февраля 2020

Сообщение об ошибке 'duplicate entry ... for key ...' было бы самоочевидным, если бы оно не происходило во время оператора SELECT, а не INSERT.

Вот выражение: SELECT DISTINCT e FROM EmailAddress e WHERE e.email = :email

Вот полный блок кода:

        TypedQuery<EmailAddress> query = this.getEntityManager().createQuery(
                "SELECT DISTINCT e FROM EmailAddress e WHERE e.email = :email", EmailAddress.class);
        query.setParameter("email", email);

        try {
            return query.getSingleResult();
        } catch (NoResultException e) {
            return null;
        }

Я использую Hibernate с Spring. Я предполагаю, что это связано с тем, как Hibernate обрабатывает транзакции. Должно быть, что-то происходит, о чем я не знаю, потому что я не думаю, что этот запрос сам по себе должен вызвать эту ошибку. Однако, ошибка определенно генерируется при выполнении этого запроса.

Правильно ли я считаю, что это должно происходить только во время INSERT?

Если я удаляю этот запрос из пути выполнения, все работает нормально, пока не будет предпринята попытка вставки. Затем выдается та же ошибка.

Возможно, что-то не так с моими сущностями перед выполнением SELECT?

Если это поможет, ключ в этом случае является неосновным составным ключом Находясь в таблице соединения между пользователями и таблицами адресов электронной почты.

...