Eu tenho um insertOrUpdatemétodo que insere um Entityquando não existe ou atualizá-lo, se existir. Para habilitar isso, eu tenho que findByIdAndForeignKey, se ele retornou nullinserir, se não for, atualizar. O problema é como verifico se ele existe? Então eu tentei getSingleResult. Mas lança uma exceção se o
public Profile findByUserNameAndPropertyName(String userName, String propertyName) {
String namedQuery = Profile.class.getSimpleName() + ".findByUserNameAndPropertyName";
Query query = entityManager.createNamedQuery(namedQuery);
query.setParameter("name", userName);
query.setParameter("propName", propertyName);
Object result = query.getSingleResult();
if (result == null) return null;
return (Profile) result;
}
mas getSingleResultjoga um Exception.
obrigado
getSingleResult()é usado em situações como: " Estou totalmente certo de que esse registro existe. Atire em mim se não existir ". Não quero testarnulltodas as vezes que uso esse método porque tenho certeza de que ele não será devolvido. Caso contrário, isso causa muitos clichês e programação defensiva. E se o registro realmente não existir (como oposto ao que assumimos), é muito melhorNoResultExceptioncompará-lo comNullPointerExceptionalgumas linhas mais tarde. É claro que ter duas versõesgetSingleResult()seria fantástico, mas se eu tiver que pegar um ...