Después de de nuestra prolongada compilación de información hemos podido resolver esta aprieto que tienen muchos usuarios. Te dejamos la respuesta y nuestro deseo es resultarte de mucha apoyo.
Solución:
Vi algunas publicaciones sobre el uso de alias en consultas
Este es en realidad un enfoque sugerido en JavaDocs:
Para facilitar el mapeo entre columnas y campos que no tienen nombres coincidentes, intente usar alias de columna en la instrucción SQL como “seleccione fname como nombre del cliente”.
Desde: BeanPropertyRowMapper
.
imposible hacer un SELECT *
Por favor, no use SELECT *
. Esto lo hace vulnerable a cualquier cambio en el esquema de la base de datos, incluidos los completamente compatibles con versiones anteriores, como agregar o reorganizar columnas.
¿No hay ninguna anotación que se pueda usar con BeanPropertyRowMapper como @Column de JPA?
Sí, se llama jpa, hibernate y tal vez ibatis. En serio, usa alias o implementa los tuyos propios RowMapper
Spring no es un orm con todas las funciones.
Puede anular el BeanPropertyRowMapper.underscoreName
y obtenga el nombre de la anotación Columna para mapear el campo con @Column(name = "EXAMPLE_KEY")
en el PropertyDescriptor (enlace getter/setter).
@Slf4j
public class ColumnRowMapper extends BeanPropertyRowMapper
private ColumnRowMapper(final Class mappedClass)
super(mappedClass);
@Override
protected String underscoreName(final String name)
/**
* New instance.
*
* @param the generic type
* @param mappedClass the mapped class
* @return the bean property row mapper
*/
public static BeanPropertyRowMapper newInstance(final Class mappedClass)
return new ColumnRowMapper<>(mappedClass);