Error: duplicate list records when got from API that made from Spring Boot and SQL Server

Error: duplicate list records when got from API that made from Spring Boot and SQL Server

我在 SQL 服务器中创建了一个存储过程,它工作正常,如下所示:

exec udf_get_gio_hang_by_id_khach_hang @id_khach_hang='KH00003368'

结果是如下 2 条记录:

我的目的是创建一个 API 来获取上面的列表 record.So 我通过 Spring 引导创建 API 如下所示: 首先我创建一个模型 GioHang.java

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

}

然后我创建了一个存储库界面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);
}

接下来我创建了一个服务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);
    }
}

最后,我在GioHangResource.java

中创建了一个API
@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);
    }
}

我大摇大摆地测试了 API,但我得到了如下重复记录列表:

我不知道为什么列表中的记录都与第一条记录相同?

请帮助我。

我认为问题与您使用 id_khach_hang 作为主键有关,这应该是唯一的,但在您的情况下不会发生这种情况。您应该有一个应该具有唯一值的列并将其用于 @Id 属性.

此外,在java中编写代码时请不要使用蛇符号,它会使事情变得如此丑陋和难以理解。

我猜这个错误是因为我在 SQL 服务器中为 id_khach_hangid_xe 设置了主服务器,但只是为其中一个设置了 @Id 如果说: id_khach_hangid_xe 的解决方案 1:Make @Id 解决方案 2:You 可以添加另一列,如 Id_record,然后为其创建主键,并为 id_khach_hangid_xe 创建外键。记住 make @Id id_record