Tengo un insertOrUpdatemétodo que inserta un Entitycuando no existe o lo actualizo si lo hace. Para habilitar esto, tengo que hacerlo findByIdAndForeignKey, si devuelve nullinsertar, si no, actualizar. El problema es cómo verifico si existe. Entonces lo intenté getSingleResult. Pero arroja una excepción si el
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;
}
pero getSingleResultlanza un Exception.
Gracias
getSingleResult()se usa en situaciones como: " Estoy totalmente seguro de que este registro existe. Dispárame si no existe ". No quiero probarnullcada vez que uso este método porque estoy seguro de que no lo devolverá. De lo contrario, causa una gran cantidad de programación repetitiva y defensiva. Y si el registro realmente no existe (a diferencia de lo que asumimos), es mucho mejor haberloNoResultExceptioncomparado conNullPointerExceptionalgunas líneas más adelante. Por supuesto, tener dos versiones degetSingleResult()sería increíble, pero si tengo que elegir una ...