sql >> Base de Datos >  >> RDS >> Mysql

Consulta de unión con múltiples selecciones posteriores a java 8

El enfoque idiomático aquí sería el siguiente (usando la API JDK 9):

try (Stream<Record5<UUID, UUID, String, Integer, String>> stream = valuesToQuery
        .stream()
        .map(this::getSelectQueryForValue)
        .reduce(Select::union)
        .stream() // JDK 9 method
        .flatMap(Select::fetchStream)) {
    ...
}

Utiliza el útil Optional.stream() método, que se agregó en JDK 9. En JDK 8, podría hacer esto en su lugar:

valuesToQuery
    .stream()
    .map(this::getSelectQueryForValue)
    .reduce(Select::union)
    .ifPresent(s -> {
        try (Stream<Record5<UUID, UUID, String, Integer, String>> stream = 
             s.fetchStream()) {
            ...
        }
    })

Escribí un blog sobre esto con más detalle aquí.