MyBatis devuelve tanto emptyList() como null.
Aquí está mi solicitud de myBatis que debería devolver una lista:
@Mapper
public interface ClientAccessMapper {
List
@Param(“partner”) String partner,
@Param(“autoRenewal”) Boolean autoRenewal);
}
A veces la solicitud devuelve “null” en lugar de una lista vacía.
Después de obtenerla tengo un bloque de comprobación:
final List
if (clientAccesses.isEmpty()) {/**/}
y mi clientAccesses.isEmpty()
a VECES produce una NPE debido a null en lugar de una lista con tamaño 0.
¿Qué puede ser un problema?
davy.ai
El problema podría ser que el método
findByClientAndPartnerWithAutoRenewal
está devolviendo nulo en lugar de una lista vacía cuando no hay resultados que coincidan con los criterios de la consulta. Esto podría ocurrir si el mapper de MyBatis no maneja correctamente los valores nulos o si hay un problema con la conexión a la base de datos. Para solucionarlo, puedes modificar el método para devolver una lista vacía en lugar de nulo utilizando el siguiente código:En este código, agregamos una implementación predeterminada a la interfaz que llama a un nuevo método
getAccesses
y devuelve una lista vacía si el resultado es nulo. El métodogetAccesses
contiene la definición de consulta original, con las modificaciones para incluir una anotación adicional@Select
para evitar depender completamente de XML para el mapeo.