La consulta no arrojó un resultado único.
Esta es la consulta que he escrito:
select c.id, CONCAT(c.major_version, '.', c.minor_version) as versions
from event_ids c
where c_id in ('101') group by c_id, major_version, minor_version;
Este es el resultado que obtengo de la base de datos:
|id | versions|
|----|-------- |
|101 | 0.0 |
|101 | 1.0 |
|101 | 2.0 |
|101 | 3.0 |
En mi aplicación, estoy almacenando este resultado en un Map<><string>, List<string>>
, pero me da un error que dice “la consulta no devolvió un resultado único”.
¿Cómo puedo almacenar este resultado? ¿Qué estructura de datos podría usar?
davy.ai
El error que estás recibiendo sugiere que la consulta está devolviendo múltiples filas para el mismo id. Una posible solución es cambiar la clave del Map de List a String, utilizando el valor del id como clave. De esta manera, cada entrada del Map representa un id único, con una Lista de versiones como valor.
Puedes utilizar un HashMap<string,></string,>> para almacenar este resultado. Aquí tienes un ejemplo de código:
Este código recorre el ResultSet y añade cada id y versión al Map. Si un id ya existe en el Map, la nueva versión se añade a la Lista existente de versiones. De lo contrario, se crea una nueva entrada con una Lista que contiene la versión actual.
Este enfoque maneja la posibilidad de múltiples versiones para el mismo id, al mismo tiempo que te permite recuperar fácilmente todas las versiones de un id dado utilizando Map.get(id).