我有这个实体:
@Entity
@Table(name = "_8", schema = "acc")
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class compras {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
@Column(name = "id")
private long id;
@Basic
@Column(name = "entity_id")
private Integer entityId;
@Basic
@Column(name = "subdiario")
private Integer subdiario;
@Basic
@Column(name = "periodo_tributario")
private Integer periodoTributario;
@Basic
@Column(name = "tipo_operacion")
private Integer tipoOperacion;
@Basic
@Column(name = "tipo_comprobante")
private Integer tipoComprobante;
@Basic
@Column(name = "fecha_emision")
private Date fechaEmision;
@Basic
@Column(name = "fecha_vencimiento")
private Date fechaVencimiento;
@Basic
@Column(name = "numero_serie")
private String numeroSerie;
@Basic
@Column(name = "numero_correlativo")
private String numeroCorrelativo;
@Basic
@Column(name = "importe_final")
private Integer importeFinal;
@Basic
@Column(name = "tipo_documento")
private String tipoDocumento;
@Basic
@Column(name = "numero_documento")
private String numeroDocumento;
@Basic
@Column(name = "clasificacion_bienes_servicios")
private Integer clasificacionBienesServicios;
@Basic
@Column(name = "destino")
private Integer destino;
@Basic
@Column(name = "valor")
private BigDecimal valor;
@Basic
@Column(name = "icbp")
private BigDecimal icbp;
@Basic
@Column(name = "isc")
private BigDecimal isc;
@Basic
@Column(name = "otros_cargos")
private BigDecimal otrosCargos;
@Basic
@Column(name = "tipo_moneda")
private String tipoMoneda;
@Basic
@Column(name = "tasa_detraccion")
private Integer tasaDetraccion;
@Basic
@Column(name = "tasa_percepcion")
private Integer tasaPercepcion;
@Basic
@Column(name = "medio_pago")
private Integer medioPago;
@Basic
@Column(name = "tipo_comprobante_modificado")
private Integer tipoComprobanteModificado;
@Basic
@Column(name = "numero_serie_modificado")
private String numeroSerieModificado;
@Basic
@Column(name = "numero_correlativo_modificado")
private Integer numeroCorrelativoModificado;
@Basic
@Column(name = "glosa")
private String glosa;
@Basic
@Column(name = "cui")
private String cui;
@Basic
@Column(name = "observaciones")
private String observaciones;}
这个仓库有一个原生查询(我需要这个原生的,因为它是一个例子,能够Map一个更复杂的):
public interface ComprasRepo extends JpaRepository <compras,Long> {
List<compras> findAllByEntityId(int entityId);
@Query(value = "SELECT id,fecha_emision AS FechaEmision, numero_serie AS NumeroSerie, numero_correlativo AS NumeroCorreltivo, valor AS Valor, igv AS IGV, icbp AS ICBP, isc AS ISC, otros_cargos AS OtrosCargos FROM acc._8 WHERE entity_id = :entity AND periodo_tributario = :periodo", nativeQuery = true)
List<compras> TablaPersonal(@Param("entity") Long entityId, @Param("periodo") Integer periodo);
}
当一个人尝试测试:
@SpringBootTest
class DataWarehouseApplicationTests {
@Autowired
private ComprasRepo comprasRepo;
@Test
void contextLoads() {
List<compras> resultado=comprasRepo.TablaPersonal(1L, 202201);
for (compras record : resultado){
System.out.println(record);
};
}
}
这将返回以下错误:
org.springframework.dao.InvalidDataAccessResourceUsageException:无法按名称找到列位置:clasificacion_bienes_servicios [在此结果集中找不到列名clasificacion_bienes_servicios。] [n/a]; SQL [n/a]
问题是,我不想检索列A,我不知道为什么错误说没有找到,如果它也不在查询中。
请帮帮我
PD:实体的Map是正确的,它已经用FindAll方法测试过了
1条答案
按热度按时间j9per5c41#
看起来您只想从表中读取选定的字段。在这种情况下,不能在结果列表中使用实体类。正如
@tgdavis
评论中所解释的那样。解决方案
定义一个新类(POJO),它只包含select语句中的字段。大概是这样的:
然后像这样在repo中使用它: