java - Error: registros de lista duplicados cuando se obtuvieron de una API creada desde Spring Boot y SQL Server

CorePress2024-01-24  10

Creé un procedimiento de tienda en SQL Server y funciona bien de la siguiente manera:

exec udf_get_gio_hang_by_id_khach_hang @id_khach_hang='KH00003368'

y el resultado son 2 registros como el siguiente:

Mi propósito es crear una API para obtener la lista de registros anteriores. Entonces creo una API mediante Spring Boot de la siguiente manera: Primero creo un modelo GioHang.java

@Entity
public class GioHang implements Serializable {
    
    @Id
    private String id_khach_hang;
    
    
    private String id_xe;
    private int so_luong;
    
    //setter,getter

}

Luego creé una interfaz de repositorio GioHangRepo.java

@Repository
public interface GioHangRepo extends JpaRepository<GioHang,String> {
@Query(value = "{call udf_get_gio_hang_by_id_khach_hang(:id_khach_hang)}",nativeQuery = true)
    public List<GioHang> get_list_gio_hang_via_id_khach_hang(@Param("id_khach_hang")  String id_khach_hang);
}

A continuación creé un servicio GioHangService.java

@Service
@Transactional
public class GioHangService {
    @Autowired
    private GioHangRepo gioHangRepo;

    public List<GioHang> getGioHangById_khach_hang(String id_khach_hang)
    {
        return this.gioHangRepo.get_list_gio_hang_via_id_khach_hang(id_khach_hang);
    }
}

Finalmente, creé una API en GioHangResource.java

@RestController
@RequestMapping("/gio_hang")
public class GioHangResource {
    @Autowired
    private GioHangService gioHangService;
    
    @GetMapping("/getGioHangById_khach_hang/{id_khach_hang}")
    public ResponseEntity<List<GioHang>> getGioHangById(@PathVariable("id_khach_hang") String id_khach_hang)
    {
        List<GioHang> gh = this.gioHangService.getGioHangById_khach_hang(id_khach_hang);
        return new ResponseEntity<>(gh,HttpStatus.OK);
    }
}

Probé la API en swagger pero obtuve una lista de registros duplicados como la siguiente:

No sé por qué los registros de la lista son todos iguales que el primer registro.

por favor ayúdame.



------------------------------------

Supongo que este error se debe a que configuré el valor primario para id_khach_hang e id_xe en SQL Server, pero simplemente establecí @Id para uno de ellos. Si eso: Solución 1: cree @Id tanto para id_khach_hang como para id_xe Solución 2: Puede agregar otra columna como Id_record y luego crearle una clave principal y crear una clave externa para id_khach_hang e id_xe. Y recuerde crear @Id para id_record

Respondido

27 de marzo de 2021 a las 14:58

Drake Nguyen

Drake Nguyen

124

1

1 insignia plateada

9

9 insignias de bronce

1

Sí, es lo que quiero. Gracias

- Dunguyen

27/03/2021 a las 15:00



------------------------------------

Creo que el problema está relacionado con el hecho de que estás usando id_khach_hang como clave principal, que debería ser única, cosa que no sucede en tu caso. Debería tener una columna que debería tener valores únicos y utilizarla para la propiedad @Id.

Además,Por favor, no utilices la notación serpiente cuando escribas código en Java, hace que las cosas sean muy feas y difíciles de entender.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare