Если SQL ничего не возвращает, это будет соответствовать 0 найденному элементу, т.е. пустой список , а не список вообще. Я также смоделировал бы это соответственно:
@Query(value = "FROM Address a WHERE a.userId = :userId")
fun findAddressByUserId(@Param("userId") userId: String) : List<Address>
Это также позволит вам опустить !!
при его использовании.
Я не знаю, какую библиотеку вы используете, но если она строго не позволяет иметь типы возвращаемых значений, не допускающие значения NULL, то вы могли бы написать функцию-обертку, которая просто вызывает другую. Используйте оператор ?:
(Elvis) для этого случая:
@Query(value = "FROM Address a WHERE a.userId = :userId")
private fun _findAddressByUserId(@Param("userId") userId: String) : List<Address>?
fun findAddressByUserId(userId: String) : List<Address> =
_findAddressByUserId(userId) ?: emptyList()