Saltar al contenido

JPA getSingleResult () o nulo

Solución:

Lanzar una excepción es cómo getSingleResult() indica que no se puede encontrar. Personalmente, no soporto este tipo de API. Obliga al manejo de excepciones espurias sin ningún beneficio real. Solo tiene que envolver el código en un bloque try-catch.

Alternativamente, puede consultar una lista y ver si está vacía. Eso no genera una excepción. En realidad, dado que técnicamente no está haciendo una búsqueda de clave primaria, podría haber múltiples resultados (incluso si uno, ambos o la combinación de sus claves externas o restricciones lo hacen imposible en la práctica), por lo que esta es probablemente la solución más apropiada.

Encapsulé la lógica en el siguiente método auxiliar.

public class JpaResultHelper {
    public static Object getSingleResultOrNull(Query query){
        List results = query.getResultList();
        if (results.isEmpty()) return null;
        else if (results.size() == 1) return results.get(0);
        throw new NonUniqueResultException();
    }
}

Pruebe esto en Java 8:

Optional first = query.getResultList().stream().findFirst();
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *