Spring boot con consulta nativa – la entidad mapeada es nula cuando el valor de la columna es nulo.
Estoy usando una consulta nativa para obtener una lista de entidades en Spring Boot. Cada vez que el valor de la columna es nulo, la entidad asignada también es nula. Mi repositorio se ve así:
“`
@Repository
public interface OrderRepository extends CrudRepository<OrderKey, Long> {
@Query(value = "SELECT l.[ORDER_ID]," +
"l.[KEY_TYPE], " +
"l.[KEY]," +
"l.[VERSION] " +
"FROM [ORDER_TABLE] l " +
"WHERE [ORDER_ID] = :orderId",
nativeQuery = true)
List<OrderKey> findAll(@Param("orderId") Long orderId);
}
Entidad:
public class OrderKey implements Serializable {
private static final long serialVersionUID = 10L;
@Id
@Column(name = "ORDER_ID")
public long orderId;
@Id
@Column(name = "KEY_TYPE")
public String keyType;
@Column(name = "KEY")
public String key;
@Column(name = "VERSION")
public String version;
}
Tengo tres filas en la tabla de la base de datos, donde dos filas tienen la columna “Versión” con valores nulos.
Veo que la lista
¿Puede alguien ayudarme a solucionar esto?
davy.ai
Para solucionar este problema, se puede utilizar la anotación
@SqlResultSetMapping
.Primero, es necesario crear un constructor en la clase
OrderKey
que tome todas las columnas seleccionadas en la consulta.Luego, se puede crear un
@SqlResultSetMapping
que especifique el constructor a usar para crear instancias deOrderKey
.Finalmente, se puede modificar el método
findAll
para usarSqlResultSetMapping
.Ahora, cuando se llama a este método para filas donde la columna
version
es nula, la lista resultante deOrderKey
tendrá instancias deOrderKey
con el campoversion
establecido en nulo en lugar de instancias nulas.</orderkey,>