Сообщение об ошибке '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?
Если это поможет, ключ в этом случае является неосновным составным ключом Находясь в таблице соединения между пользователями и таблицами адресов электронной почты.