首页 > 解决方案 > 如何在 JSON 中显示多行

问题描述

我需要显示sql 结果

在这样的 JSON 中

{
slpcode: 700,
businesspartnerparamid:{181,
                        195,
                        197,
                        362,
                        376
                        }
}

在春季启动应用程序中。

班级

import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name="businesspartnerparamsalesperson")
public class Vendedor {

    @Id
    @Column(name="businesspartnerparamid", nullable = false)
    private Long businessPartnerParamID;

    @Column(name="Slpcode",nullable = false)
    private Long slpCode;

    public Long getBusinessPartnerParamID() {
        return businessPartnerParamID;
    }

    public void setBusinessPartnerParamID(Long businessPartnerParamID) {
        this.businessPartnerParamID = businessPartnerParamID;
    }

    public Long getSlpCode() {
        return slpCode;
    }

    public void setSlpCode(Long slpCode) {
        slpCode = slpCode;
    }
}

回购

Repository
public interface VendedorRepository extends JpaRepository<Vendedor, Long> {



    Optional<Vendedor> findVendedorBySlpCode (Long slpCode);



}

服务

@Service
@AllArgsConstructor
public class ApiService {

    @Autowired
    private final VendedorRepository vendedorRepository;

    @Autowired
    private final ClienteRepository clienteRepository;

    public Optional<Vendedor> findVendedorByCode (Long slpCode) {
        Optional<Vendedor> vendedor = vendedorRepository.findVendedorBySlpCode(slpCode);

        return vendedor;
    }

    public Optional<Cliente> findClienteByCode (String code){
        Optional<Cliente> cliente = clienteRepository.findClienteByCardCode(code);

        return cliente;
    }


}

控制器

@CrossOrigin
@RestController
@EnableAutoConfiguration
@RequestMapping("/vendedor")
@AllArgsConstructor
public class ApiController {

    @Autowired
    private ApiService apiService;


    @GetMapping(value="/{slpCode}", produces = MediaType.APPLICATION_JSON_VALUE)
    public Optional<Vendedor> findVendedorBySlpCode (@PathVariable Long slpCode){
        return apiService.findVendedorByCode(slpCode);
    }
}

我在日志上收到这条消息:

查询未返回唯一结果:94;嵌套异常是 >javax.persistence.NonUniqueResultException:查询未返回唯一结果:94

之后,我想删除/更新所有与销售人员相关的 id(将客户(id)从一个转移到另一个。

标签: javaspring-bootspring-data-jpa

解决方案


javax.persistence.NonUniqueResultException表示查询有多个结果。查看您的数据,确实,您slpCode700.

您必须将返回类型更改为 List of Vendedor

List<Vendedor> findVendedorBySlpCode (Long slpCode);

如果没有找到供应商,将返回一个空列表。


推荐阅读